Python使用wxPython开发电脑信息二维码生成器

 更新时间:2025年12月25日 08:19:01   作者:winfredzhang  
在日常工作中,我们经常需要快速分享电脑的基本信息,今天我们就来开发一个实用的小工具——电脑信息二维码生成器,只需一键就能将电脑信息生成二维码,方便快捷地分享给他人

前言

在日常工作中,我们经常需要快速分享电脑的基本信息,比如IP地址、MAC地址等。手动输入不仅麻烦还容易出错。今天我们就来开发一个实用的小工具——电脑信息二维码生成器,只需一键就能将电脑信息生成二维码,方便快捷地分享给他人。

项目需求

我们要实现一个桌面应用程序,具备以下功能:

  • 自动获取电脑的基本信息(名称、IP、MAC地址、设备类型、操作系统)
  • 支持中文文本输入
  • 生成二维码并预览
  • 保存二维码为图片文件

技术选型

  • wxPython:跨平台的GUI框架,界面美观、易用
  • qrcode:Python二维码生成库
  • Pillow (PIL):图像处理库
  • psutil:系统信息获取库

环境准备

首先安装所需的依赖包:

pip install wxPython qrcode pillow psutil

运行界面

核心功能实现

1. 获取电脑信息

这是程序的核心功能之一。我们需要获取多种系统信息:

获取电脑名称

使用socket.gethostname()即可轻松获取:

computer_name = socket.gethostname()

获取IP地址和MAC地址

这里的难点是要获取真正在使用的网卡信息,而不是所有网卡。我们使用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()

2. 界面设计

使用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)

界面包含:

  • 提示标签
  • 自动填充和清空按钮
  • 多行文本输入框
  • 生成二维码按钮
  • 二维码显示区域
  • 保存按钮

3. 二维码生成

使用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:边框大小

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作为中间缓冲区,避免创建临时文件。

5. 保存功能

使用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. 智能网卡识别

不是简单获取所有网卡信息,而是智能识别当前正在使用的活动网卡,确保信息准确性。

2. 真实MAC地址

通过psutil获取网卡的真实MAC地址,而不是使用uuid生成的虚拟地址,更符合实际需求。

3. 设备类型检测

自动判断是台式机还是笔记本,为用户提供更完整的设备信息。

4. 完善的错误处理

在关键操作处添加try-except异常处理,并通过消息框友好地提示用户。

5. 用户体验优化

  • 自动填充按钮:一键获取所有信息
  • 清空按钮:快速清除内容
  • 实时预览:生成后立即显示
  • 支持中文:完美支持中文输入和显示

使用场景

  • IT运维:快速记录和分享设备信息
  • 设备管理:为设备生成信息标签
  • 远程协助:快速将电脑信息发送给技术支持人员
  • 资产管理:为公司电脑建立二维码档案

扩展思路

这个程序还可以继续扩展:

  • 添加更多系统信息(CPU、内存、硬盘等)
  • 支持自定义二维码颜色和样式
  • 添加二维码识别功能
  • 批量生成功能
  • 导出为Excel或CSV格式
  • 添加Logo到二维码中心
  • 支持多语言界面

总结

通过这个项目,我们学习了:

  • wxPython GUI编程的基本方法
  • 如何使用psutil获取系统信息
  • 二维码的生成和图像处理
  • Python跨平台桌面应用开发

完整的代码结构清晰,功能实用,是一个很好的Python桌面应用开发实践项目。你可以在此基础上根据自己的需求进行定制和扩展。

到此这篇关于Python使用wxPython开发电脑信息二维码生成器的文章就介绍到这了,更多相关Python二维码生成器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python matplotlib画盒图、子图解决坐标轴标签重叠的问题

    python matplotlib画盒图、子图解决坐标轴标签重叠的问题

    今天小编就为大家分享一篇python matplotlib画盒图、子图解决坐标轴标签重叠的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 一文详解Python中的时间和日期处理

    一文详解Python中的时间和日期处理

    在Python开发中,我们经常需要处理日期和时间,Python提供了一些内置模块,如datetime、time和calendar,这些模块让我们能够轻松地获取、操作和格式化日期和时间,本文将介绍如何在Python中使用这些模块进行日期和时间的处理
    2023-06-06
  • Python轻松实现Word文档对比并生成可视化HTML报告

    Python轻松实现Word文档对比并生成可视化HTML报告

    在日常工作和学习中,我们经常需要对两个版本的文档进行比对,本文将使用 Python + python-docx + difflib 实现一个自动化 Word 文档对比工具,感兴趣的可以了解下
    2025-08-08
  • Python基础详解之描述符

    Python基础详解之描述符

    这篇文章主要介绍了Python基础详解之描述符,文中有非常详细的代码示例,对正在学习python基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Python批量下载图片的实现步骤

    Python批量下载图片的实现步骤

    在我们日常生活中,有时候进入一个网站后,发现大量的图片,比如说一些好看的素材,以及我以前非常喜欢看的风景图片,想要下载下来怎么办?难道我一张张去复制?这有点不现实,所以本文给大家介绍了Python批量下载图片的实现步骤,需要的朋友可以参考下
    2025-10-10
  • 学会这个炫酷图表利器pyecharts,还怕不被公司重用?

    学会这个炫酷图表利器pyecharts,还怕不被公司重用?

    前段时间,公司高层要看上半年度项目组业绩数据分析,没办法,硬着头皮也要上!说到数据分析,肯定离不开数据的可视化,毕竟图表比冷冰冰的数字更加直观,Boss只想一眼就能看出趋势和结论.今天我们就聊一聊 pyecharts 中几种常用的图表, ,需要的朋友可以参考下
    2021-06-06
  • sklearn.metrics 中的f1-score简介

    sklearn.metrics 中的f1-score简介

    这篇文章主要介绍了sklearn.metrics 中的f1-score简介,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • Python实现随机爬山算法

    Python实现随机爬山算法

    这篇文章主要介绍了Python实现随机爬山算法的方法,帮助大家更好的利用python进行机器学习,感兴趣的朋友可以了解下
    2021-01-01
  • Python程序中用csv模块来操作csv文件的基本使用教程

    Python程序中用csv模块来操作csv文件的基本使用教程

    这篇文章主要介绍了Python程序中用csv模块来操作csv文件的基本使用教程,csv文件中也是格式化的数据,只不过csv本身没有XML和JSON那么流行...需要的朋友可以参考下
    2016-03-03
  • 手动实现把python项目发布为exe可执行程序过程分享

    手动实现把python项目发布为exe可执行程序过程分享

    这篇文章主要介绍了手动实现把python项目发布为exe可执行程序过程分享,本文使用C语言实现了一个简洁的Python打包程序,需要的朋友可以参考下
    2014-10-10

最新评论