python 桌面标签显示电脑ip和mac地址
import tkinter, win32api, win32con, pywintypes,win32gui,wmi
import socket
import psutil
import os,sys
import math
from psutil import net_if_addrs
def getIP():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip = (s.getsockname()[0])
s.close()
return ip
def get_netcard():
name = ip = mac = ''
info = net_if_addrs()
for k, v in info.items():
for item in range(0, len(v)):
if v[item][0] == 2 and getIP() in v[item][1]:
name = k
ip = v[item][1]
break
if name:
data = info[name]
for i in data:
if '-' in i[1] or ':' in i[1]:
if len(i[1])==17:
mac = str(i[1]).replace(':','-')
break
myname = socket.gethostname()
info = "设备名称:"+myname+"\n I P:" +ip +"\n MAC:" + mac
return info
def write_pid():
pid = os.getpid()
fp = open(os.getcwd()+"\\pid.log",'w')
fp.write(str(pid))
fp.close()
def read_pid():
if os.path.exists(os.getcwd()+"\\pid.log"):
fp = open(os.getcwd()+"\\pid.log",'r')
pid = fp.read()
fp.close()
return pid
else:
return False
pid =int(read_pid())
if pid:
running_pid = psutil.pids()
if pid in running_pid:
sys.exit()
else:
write_pid()
else:
write_pid()
info = get_netcard()
c = wmi.WMI()
for cpu in c.Win32_Processor():
info +=" \n CPU:"+cpu.Name
memorytotal = 0
for Memory in c.Win32_PhysicalMemory ():
memorytotal +=int(Memory.Capacity)
info += " \n 内存:" + str(math.ceil(memorytotal/1024/1024/1024))+"GB"
root = tkinter.Tk()
width = win32api.GetSystemMetrics(0)
height = win32api.GetSystemMetrics(1)
root.overrideredirect(True)
screenwidth=root.winfo_screenwidth()-350
root.geometry("+"+str(screenwidth)+"+30")
root.lift()
root.attributes('-topmost',True)
root.wm_attributes("-disabled", True)
root.wm_attributes("-transparentcolor", "red")
root.wm_attributes('-alpha',0.3)
hWindow = pywintypes.HANDLE(int(root.frame(), 16))
win32gui.ShowWindow(hWindow, win32con.SW_HIDE)
win32api.SetWindowLong(
hWindow, win32con.GWL_EXSTYLE,
win32api.GetWindowLong(hWindow, win32con.GWL_EXSTYLE)
| win32con.WS_EX_NOACTIVATE
| win32con.WS_EX_TOOLWINDOW)
win32gui.ShowWindow(hWindow, win32con.SW_SHOW)
label = tkinter.Label(text=info,compound = 'left',font=('微软雅黑','10'), fg='#fff',bg='#555')
label.pack()
root.mainloop()