显示本地 IP 地址和相应的 QR 码,方便用户共享和访问网络信息

这段代码使用了 wxPython、socket、qrcode 和 PIL(Python Imaging Library)模块来生成一个具有本地 IP 地址和相应 QR 码的窗口应用程序。

C:\pythoncode\new\showipgenqrcode.py

让我们逐行解释代码的功能:

  1. import wx:导入 wxPython 模块,用于创建 GUI 应用程序的窗口和控件。
  2. import socket:导入 socket 模块,用于获取本地 IP 地址。
  3. import qrcode:导入 qrcode 模块,用于生成 QR 码。
  4. from PIL import Image:从 PIL(Python Imaging Library)模块中导入 Image 类,用于将 QR 码转换为图像文件。

接下来是定义一个类 MyFrame,继承自 wxPython 的 wx.Frame 类,用于创建窗口应用程序。在 __init__ 方法中:

  1. super().__init__(None, title="IP Address and QR Code", size=(400, 300)):调用父类的构造函数,创建一个窗口,并设置标题和大小。
  2. panel = wx.Panel(self):创建一个面板,用于放置其他控件。
  3. ip_address = socket.gethostbyname(socket.gethostname()):使用 socket 模块获取本地 IP 地址。
  4. qr = qrcode.QRCode(version=1, box_size=10, border=4):创建一个 QRCode 对象,指定版本、方块大小和边框宽度。
  5. qr.add_data(ip_address):将本地 IP 地址添加到 QRCode 对象中。
  6. qr.make(fit=True):生成 QR 码图像。
  7. qr_image = qr.make_image(fill_color="black", back_color="white"):根据 QRCode 对象生成图像,设置前景色和背景色。
  8. temp_file = "temp_qrcode.png":指定临时文件的名称。
  9. qr_image.save(temp_file):将 QR 码图像保存为临时文件。
  10. qr_bitmap = wx.Bitmap(temp_file, type=wx.BITMAP_TYPE_PNG):使用临时文件创建位图对象。
  11. ip_label = wx.StaticText(panel, label=f"IP Address: {ip_address}"):创建一个静态文本控件,显示 IP 地址。
  12. qr_bitmap_ctrl = wx.StaticBitmap(panel, bitmap=qr_bitmap):创建一个静态位图控件,显示 QR 码图像。
  13. sizer = wx.BoxSizer(wx.VERTICAL):创建一个垂直布局管理器。
  14. sizer.Add(ip_label, 0, wx.ALL, 10):将 IP 地址文本控件添加到布局中,并设置边距。
  15. sizer.Add(qr_bitmap_ctrl, 0, wx.ALL, 10):将 QR 码位图控件添加到布局中,并设置边距。
  16. panel.SetSizerAndFit(sizer):将布局管理器应用于面板。

全部代码

python 复制代码
import wx
import socket
import qrcode
from PIL import Image

class MyFrame(wx.Frame):
    def __init__(self):
        super().__init__(None, title="IP Address and QR Code", size=(400, 300))
        
        panel = wx.Panel(self)
        
        # 获取本地 IP 地址
        ip_address = socket.gethostbyname(socket.gethostname())
        
        # 生成 QR 码
        qr = qrcode.QRCode(version=1, box_size=10, border=4)
        qr.add_data(ip_address)
        qr.make(fit=True)
        
        # 将 QR 码转换为图片
        qr_image = qr.make_image(fill_color="black", back_color="white")
        
        # 将图片保存为临时文件
        temp_file = "temp_qrcode.png"
        qr_image.save(temp_file)
        
        # 创建位图对象
        qr_bitmap = wx.Bitmap(temp_file, type=wx.BITMAP_TYPE_PNG)
        
        # 在面板上显示 IP 地址和 QR 码
        ip_label = wx.StaticText(panel, label=f"IP Address: {ip_address}")
        qr_bitmap_ctrl = wx.StaticBitmap(panel, bitmap=qr_bitmap)
        
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(ip_label, 0, wx.ALL, 10)
        sizer.Add(qr_bitmap_ctrl, 0, wx.ALL, 10)
        panel.SetSizerAndFit(sizer)

if __name__ == '__main__':
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

最后,我们在 if __name__ == '__main__': 块中创建了 wxPython 应用程序的实例,并运行应用程序的主循环(app.MainLoop())。这将显示窗口应用程序并等待用户交互。

该应用程序窗口将显示本地 IP 地址和相应的 QR 码,方便用户共享和访问网络信息。

相关推荐
电商API_1800790524716 小时前
Python 实现闲鱼商品列表批量采集,接口异常重试机制搭建
大数据·开发语言·数据库·爬虫·python
放下华子我只抽RuiKe516 小时前
FastAPI 全栈后端(四):认证与授权
开发语言·前端·javascript·python·深度学习·react.js·fastapi
量化君也17 小时前
从回测到全自动实盘交易,全天候策略需要经历哪些改造?
大数据·人工智能·python·算法·金融
装不满的克莱因瓶17 小时前
自然语言处理发展历史——从规则系统到大语言模型的演进之路
网络·人工智能·python·深度学习·语言模型·自然语言处理
2601_9516457817 小时前
Linux 编程语言全解析:C、C++、Python、Go、Rust 谁更强?
linux·python·go·c·编程语言
themingyi17 小时前
Abaqus2024安装python包pandas
开发语言·python·pandas
殇淋狱陌17 小时前
Python列表知识思维导图
开发语言·python·学习
Web极客码18 小时前
如何通过 Python + LLM 用最少的 Token 完成精准推荐任务
开发语言·人工智能·python·ai
一晌小贪欢18 小时前
第26节:自动化办公——利用 Python 自动生成动态分析报告 (PPT/PDF)
开发语言·python·数据分析·自动化·powerpoint·pandas·数据可视化
西西弗Sisyphus18 小时前
YOLO26 自定义损失函数 重写 init_criterion 方法 损失类不继承基类
pytorch·python·yolo·yolo11·yolo26