• 显示本地 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):将布局管理器应用于面板。

    全部代码

    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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

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

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

  • 相关阅读:
    Docker | 将本地项目发布到阿里云的实现流程
    【Linux精讲系列】——vim详解
    36寸旅行小吉他怎么选?适合成人儿童初学入门的几款高性价比民谣小吉他品牌推荐!
    Linux零基础入门(四)Linux实用操作
    【毕业设计】基于单片机的超声波雷达系统
    webpack和vite的区别
    C#/VB.NET 读取条码类型及条码在图片中的坐标位置
    基于JavaSwing开发记事本程序(新功能替换查找撤销状态栏) 课程设计 大作业源码
    入门 Activiti 工作流,通俗易懂
    mysql——mysqlbinlog
  • 原文地址:https://blog.csdn.net/winniezhang/article/details/132611384