文章目录
- 这是程序的核心功能之一。我们需要获取多种系统信息:
- 使用socket.gethostname()即可轻松获取: computer_name = socket.gethostname()
- 这里的难点是要获取真正在使用的网卡信息,而不是所有网卡。我们使用psutil库遍历所有网络接口,找到活动的网卡: interfaces = psutil.net_if_addrs() stats = psutil.net_if_stats() for interface_name, interface_addresses in interfaces.items(): if interface_name in stats and stats[interface_name].isup: for address in interface_addresses: # 获取IPv4地址(排除回环地址) if address.family == socket.AF_INET: if not address.address.startswith(‘127.’): ip_address = address.address # 获取MAC地址 elif address.family == psutil.AF_LINK: mac_address = address.address 这样可以确保获取的IP和MAC地址来自同一个活动网卡,信息更加准确。
- 通过检测系统是否有电池来判断设备类型: def get_device_type(self): try: battery = psutil.sensors_battery() if battery is not None: return “笔记本电脑” else: return “台式机” except: return “未知类型” 这个方法简单有效,有电池的就是笔记本,没有电池的就是台式机。
- 使用platform模块获取: os_info = platform.system() + ” ” + platform.release()
- 使用wxPython构建用户界面,采用垂直布局(BoxSizer): vbox = wx.BoxSizer(wx.VERTICAL) # 添加标签 label = wx.StaticText(panel, label=’请输入要生成二维码的文字(支持中文):’) vbox.Add(label, flag=wx.LEFT|wx.TOP, border=10) # 添加文本框 self.text_ctrl = wx.TextCtrl(panel, style=wx.TE_MULTILINE, size=(560, 100)) vbox.Add(self.text_ctrl, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10) 界面包含: 提示标签 自动填充和清空按钮 多行文本输入框 生成二维码按钮 二维码显示区域 保存按钮
- 使用qrcode库生成二维码,并设置适当的参数: qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_H, # 高容错率 box_size=10, border=4, ) qr.add_data(text) qr.make(fit=True) img = qr.make_image(fill_color=”black”, back_color=”white”) 参数说明: version=1:二维码的大小版本(1-40) error_correction:容错级别,选择最高级别H box_size=10:每个小方块的像素大小 border=4:边框大小
- 生成的二维码需要转换为wxPython可以显示的格式: # 调整图像大小 img = img.resize((300, 300), Image.Resampling.LANCZOS) # 转换为wx.Image buffer = BytesIO() img.save(buffer, format=’PNG’) buffer.seek(0) wx_image = wx.Image(buffer) wx_bitmap = wx.Bitmap(wx_image) # 显示二维码 self.qr_bitmap.SetBitmap(wx_bitmap) 使用BytesIO作为中间缓冲区,避免创建临时文件。
- 使用wxPython的文件对话框,让用户选择保存位置: with wx.FileDialog(self, “保存二维码”, wildcard=”PNG files (*.png)|*.png”, style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT) as fileDialog: if fileDialog.ShowModal() == wx.ID_CANCEL: return pathname = fileDialog.GetPath() self.current_qr_image.save(pathname)
目录
- 前言
- 项目需求
- 技术选型
- 环境准备
- 运行界面
- 核心功能实现
- 1. 获取电脑信息
- 获取电脑名称
- 获取IP地址和MAC地址
- 检测设备类型(台式机/笔记本)
- 获取操作系统信息
- 2. 界面设计
- 3. 二维码生成
- 4. 图像格式转换
- 5. 保存功能
- 程序亮点
- 1. 智能网卡识别
- 2. 真实MAC地址
- 3. 设备类型检测
- 4. 完善的错误处理
- 5. 用户体验优化
- 使用场景
- 扩展思路
- 总结
在日常工作中,我们经常需要快速分享电脑的基本信息,比如IP地址、MAC地址等。手动输入不仅麻烦还容易出错。今天我们就来开发一个实用的小工具——电脑信息二维码生成器,只需一键就能将电脑信息生成二维码,方便快捷地分享给他人。
我们要实现一个桌面应用程序,具备以下功能:
- 自动获取电脑的基本信息(名称、IP、MAC地址、设备类型、操作系统)
- 支持中文文本输入
- 生成二维码并预览
- 保存二维码为图片文件
- wxPython:跨平台的GUI框架,界面美观、易用
- qrcode:Python二维码生成库
- Pillow (PIL):图像处理库
- psutil:系统信息获取库
首先安装所需的依赖包:
pip install wxPython qrcode pillow psutil

这是程序的核心功能之一。我们需要获取多种系统信息:
使用socket.gethostname()即可轻松获取:
computer_name = socket.gethostname()
这里的难点是要获取真正在使用的网卡信息,而不是所有网卡。我们使用psutil库遍历所有网络接口,找到活动的网卡:
interfaces = psutil.net_if_addrs()
stats = psutil.net_if_stats()
for interface_name, interface_addresses in interfaces.items():
if interface_name in stats and stats[interface_name].isup:
for address in interface_addresses:
# 获取IPv4地址(排除回环地址)
if address.family == socket.AF_INET:
if not address.address.startswith('127.'):
ip_address = address.address
# 获取MAC地址
elif address.family == psutil.AF_LINK:
mac_address = address.address
这样可以确保获取的IP和MAC地址来自同一个活动网卡,信息更加准确。
通过检测系统是否有电池来判断设备类型:
def get_device_type(self):
try:
battery = psutil.sensors_battery()
if battery is not None:
return "笔记本电脑"
else:
return "台式机"
except:
return "未知类型"
这个方法简单有效,有电池的就是笔记本,没有电池的就是台式机。
使用platform模块获取:
os_info = platform.system() + " " + platform.release()
使用wxPython构建用户界面,采用垂直布局(BoxSizer):
vbox = wx.BoxSizer(wx.VERTICAL) # 添加标签 label = wx.StaticText(panel, label='请输入要生成二维码的文字(支持中文):') vbox.Add(label, flag=wx.LEFT|wx.TOP, border=10) # 添加文本框 self.text_ctrl = wx.TextCtrl(panel, style=wx.TE_MULTILINE, size=(560, 100)) vbox.Add(self.text_ctrl, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)
界面包含:
- 提示标签
- 自动填充和清空按钮
- 多行文本输入框
- 生成二维码按钮
- 二维码显示区域
- 保存按钮
使用qrcode库生成二维码,并设置适当的参数:
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_H, # 高容错率
box_size=10,
border=4,
)
qr.add_data(text)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
参数说明:
version=1:二维码的大小版本(1-40)error_correction:容错级别,选择最高级别Hbox_size=10:每个小方块的像素大小border=4:边框大小
生成的二维码需要转换为wxPython可以显示的格式:
# 调整图像大小 img = img.resize((300, 300), Image.Resampling.LANCZOS) # 转换为wx.Image buffer = BytesIO() img.save(buffer, format='PNG') buffer.seek(0) wx_image = wx.Image(buffer) wx_bitmap = wx.Bitmap(wx_image) # 显示二维码 self.qr_bitmap.SetBitmap(wx_bitmap)
使用BytesIO作为中间缓冲区,避免创建临时文件。
使用wxPython的文件对话框,让用户选择保存位置:
with wx.FileDialog(self, "保存二维码",
wildcard="PNG files (*.png)|*.png",
style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT) as fileDialog:
if fileDialog.ShowModal() == wx.ID_CANCEL:
return
pathname = fileDialog.GetPath()
self.current_qr_image.save(pathname)
不是简单获取所有网卡信息,而是智能识别当前正在使用的活动网卡,确保信息准确性。
通过psutil获取网卡的真实MAC地址,而不是使用uuid生成的虚拟地址,更符合实际需求。
自动判断是台式机还是笔记本,为用户提供更完整的设备信息。
在关键操作处添加try-except异常处理,并通过消息框友好地提示用户。
- 自动填充按钮:一键获取所有信息
- 清空按钮:快速清除内容
- 实时预览:生成后立即显示
- 支持中文:完美支持中文输入和显示
- IT运维:快速记录和分享设备信息
- 设备管理:为设备生成信息标签
- 远程协助:快速将电脑信息发送给技术支持人员
- 资产管理:为公司电脑建立二维码档案
这个程序还可以继续扩展:
- 添加更多系统信息(CPU、内存、硬盘等)
- 支持自定义二维码颜色和样式
- 添加二维码识别功能
- 批量生成功能
- 导出为Excel或CSV格式
- 添加Logo到二维码中心
- 支持多语言界面
通过这个项目,我们学习了:
- wxPython GUI编程的基本方法
- 如何使用psutil获取系统信息
- 二维码的生成和图像处理
- Python跨平台桌面应用开发
完整的代码结构清晰,功能实用,是一个很好的Python桌面应用开发实践项目。你可以在此基础上根据自己的需求进行定制和扩展。
到此这篇关于Python使用wxPython开发电脑信息二维码生成器的文章就介绍到这了,更多相关Python二维码生成器内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
您可能感兴趣的文章:
- Python使用MyQR生成动态二维码的示例代码
- 使用Python开发一个批量文本地址生成二维码工具的详细教程
- Python使用qrcode库实现生成二维码的操作指南
- 在Python中生成二维码的详细步骤
- Python将数据生成二维码的四种方法实例代码
- 使用python生成各种常见条形码及二维码
- 使用python获取电脑的磁盘信息方法
- Python实现的读取电脑硬件信息功能示例
- Python获取电脑硬件信息及状态的实现方法