显示本地 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 Imageclass 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 码,方便用户共享和访问网络信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/101068.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数学建模--Subplot绘图的Python实现

目录 1.Subplot函数简介 2.Subplot绘图范例1:绘制规则子图 3.Subplot绘图范例2:绘制不规则子图 4.Subplot绘图范例3:gridspec辅助实战1 5.Subplot绘图范例4:gridspec辅助实战2 1.Subplot函数简介 """ 最近在数学建模种需要绘制多张子图,发现对于subplot函…

【学习笔记】C++ 中 static 关键字的作用

目录 前言static 作用在变量上static 作用在全局变量上static 作用在局部变量上static 作用在成员变量上 static 作用在函数上static 作用在函数上static 作用在成员函数上 前言 在 C/C 中,关键字 static 在不同的应用场景下,有不同的作用,这…

Leetcode128. 最长连续序列

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 题解&#…

如何配置远程访问以在外部网络中使用公司内部的OA办公系统——“cpolar内网穿透”

文章目录 前言1. 确认在内网下能够使用IP端口号登录OA办公系统2. 安装cpolar内网穿透3. 创建隧道映射内网OA系统服务端口4. 实现外网访问公司内网OA系统总结 前言 现在大部分公司都会在公司内网搭建使用自己的办公管理系统,如OA、ERP、金蝶等,员工只需要…

企业架构LNMP学习笔记16

基于IP的访问控制: 基于ngx_http_access_module模块,默认可使用。 语法是: deny ip 禁止IP访问 allow ip 允许IP访问 上面是允许的,下面是deny的。 老师建议写在server段中是比较合适的。 基于用户的访问控制: …

【CSS左右上角斜标签】CSS实现左右上角飘带功能,左右上角斜标签(附源码)

文章目录 写在前面涉及知识点实现效果1、实现过程1.1左上角飘带Html代码Css代码效果 1.2右上角飘带Html代码Css代码效果 2、源码分享2.1 百度网盘2.2 123网盘2.3 邮箱留言 总结 写在前面 其实在公司页面开发过程就遇到过,需要在方块右上角展示一个斜的文字或者告警…

简明易懂:Python中的分支与循环

文章目录 前言分支结构if 语句:单一条件判断else语句:提供备选方案elif 语句:多条件判断嵌套的分支结构:复杂条件逻辑 循环结构for循环:遍历序列range()函数与for循环while循环:条件重复循环控制&#xff1…

Python代码雨

系列文章 序号文章目录直达链接1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏表白代码https://want595.blog.csdn.net/article/details/1297945183跳动的爱心https://want595.blog.csdn.net/article/details/1295031234漂浮爱心https://want…

这可能是最全面的Python入门手册了!

无论是学习任何一门语言,基础知识一定要扎实,基础功非常的重要,找到一个合适的学习方法和资料会让你少走很多弯路, 你的进步速度也会快很多,无论我们学习的目的是什么,不得不说Python真的是一门值得付出时间…

软件兼容性测试怎么做?对软件产品起到什么作用?

软件兼容性测试是一项重要的软件测试活动,它可以确保在不同操作系统、硬件配置和软件环境下,软件能够正常运行,并与其他相关软件和系统进行正确的互动。 一、软件兼容性的测试方法 1、操作系统测试:测试软件在不同操作系统上的兼…

vmware虚拟机(ubuntu)远程开发golang、python环境安装

目录 1. 下载vmware2. 下载ubuntu镜像3. 安装4. 做一些设置4.1 分辨率设置4.2 语言下载4.3 输入法设置4.4 时区设置 5. 直接切换管理员权限6. 网络6.1 看ip6.2 ssh 7. 本地编译器连接远程服务器7.1 创建远程部署的配置7.2 文件同步7.3 远程启动项目 8. ubuntu安装golang环境8.1…

linux常用命令及解释大全(二)

目录 前言 一、文件的权限 二、文件的特殊属性 三、打包和压缩文件 四、查看文件内容 五、文本处理 5.1 grep 5.2 sed 5.3 其它 总结 前言 本篇文章接linux常用命令及解释大全(一)继续介绍了一部分linux常用命令,包括文件的权限&a…