社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python: 简单迅速搞搞桌面客户端,小黑窗拜拜啦

python实战 • 2 年前 • 891 次点击  

用python写好脚本,直接在终端运行,总觉得不得劲,有个GUI界面用鼠标点来点去才像样嘛........

python有不少GUI框架,例如Tkinter、wxPython、PyQt、Kivy等主流框架,也有上述框架再封装的框架,如EasyGUI、PyGUI、Pyforms等等。

然而人生苦短,做一些小工具何必杀鸡用牛刀呢。我选择傻瓜式PySimpleGUI。

做一个获取mac和ip的小工具

首先面向百度编程确定方案,查到获取mac和ip的方式有不少。

第一种,用uuid模块获取mac的,可能是玄学原因,我获取到的mac地址和直接敲ipconfig /all的不一样,该方案pass。

第二种,用wmi模块获取的,但我想同时获取网卡mac对应的ip,技术难度略高,该方案pass。

第三种,用netifaces模块,工具很强大,学习成本高,pass。

第四种,直接调用系统命令ipconfig,用字符串筛选,感觉不对,pass。

第五种,简单易行的psutil模块,运维使用,正合我意。

贴个代码:

def get_net_addr():

  macdict= dict()
  dic = psutil.net_if_addrs()
  for adapter in dic:
      sniclist = dic[adapter]
      iplist=[]

      for snic in sniclist:

          if '-' in snic.address and len(snic.address)==17:
              mac = snic.address
          if '.' in snic.address:
              iplist.append(snic.address)
          macdict[adapter] = mac,iplist

  return macdict

简简单单写个GUI

直接上pysimplegui,迅速写好GUI。

#GUI的布局
layout = [
        [sg.Text('输入位置')],
        [sg.Input(key='classnum')],
        [sg.Text('点击开始获取mac地址和ip地址')],
        [sg.Button('开始',key='submit'),sg.Quit('退出',key='q')],
        [sg.Text('主机所在位置:',size=(6,1)),sg.Text('',key='num',size=(10,1))],
        [sg.Text('主机名:',size=(6,1)),sg.Text('',key='hostname',size=(10,1))],
        [sg.Multiline('',key='information',size=(50,20),autoscroll=True)]
        ]

#设置图标,图标是从阿里巴巴图标库下载的,随便找个在线网站转换成ico
sg.set_global_icon('panda.ico')

#设置标题创建窗口
window = sg.Window('获取主机mac和ip工具',layout)

#进入循环监听事件
while True:
  event,value = window.Read()
  if event == 'submit':
      #获取mac和ip
      information = get_net_addr()
      #为了好看,写了格式化输出函数处理mac和ip信息
      output = format_information(information)
      #顺便获取主机名
      hostname = get_hostname()
      #显示信息
      window.Element('num').Update(value['classnum'])
      window.Element('hostname').Update(hostname)
      window.Element('information').print(output)
  #写入文件的小功能     write_to_file(num=value['classnum'],hostname=hostname,information=information)
  elif event == 'q' or event == sg.WIN_CLOSED:
      break
window.Close()

大功告成

pyinstaller -F -w XXXX.py一键打包成exe,搞定,收工,下班,撸串!

(这界面够丑的,算了,能用就行能用就行.............)

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/153042
 
891 次点击