Zeigen Sie die lokale IP-Adresse und den entsprechenden QR-Code an, was für Benutzer praktisch ist, Netzwerkinformationen zu teilen und darauf zuzugreifen

Dieser Code verwendet die Module wxPython, socket, qrcode und PIL (Python Imaging Library), um eine Fensteranwendung mit einer lokalen IP-Adresse und entsprechendem QR-Code zu generieren.
C:\pythoncode\new\showipgenqrcode.py
Fügen Sie hier eine Bildbeschreibung ein

Lassen Sie uns Zeile für Zeile erklären, was der Code bewirkt:

  1. import wx: Importieren Sie das wxPython-Modul, das zum Erstellen von Fenstern und Steuerelementen für GUI-Anwendungen verwendet wird.
  2. import socket: Importieren Sie das Socket-Modul, um die lokale IP-Adresse zu erhalten.
  3. import qrcode: Importieren Sie das qrcode-Modul zum Generieren von QR-Codes.
  4. from PIL import Image: Importieren Sie die Bildklasse aus dem PIL-Modul (Python Imaging Library), die zum Konvertieren von QR-Code in eine Bilddatei verwendet wird.

MyFrameAls Nächstes müssen Sie eine von der wxPython-Klasse geerbte Klasse definieren wx.Frame, die zum Erstellen von Fensteranwendungen verwendet wird. In __init__der Methode:

  1. super().__init__(None, title="IP Address and QR Code", size=(400, 300)): Rufen Sie den Konstruktor der übergeordneten Klasse auf, erstellen Sie ein Fenster und legen Sie Titel und Größe fest.
  2. panel = wx.Panel(self): Erstellen Sie ein Panel zum Platzieren anderer Steuerelemente.
  3. ip_address = socket.gethostbyname(socket.gethostname()): Verwenden Sie das Socket-Modul, um die lokale IP-Adresse abzurufen.
  4. qr = qrcode.QRCode(version=1, box_size=10, border=4): Erstellen Sie ein QRCode-Objekt, geben Sie die Version, die Quadratgröße und die Rahmenbreite an.
  5. qr.add_data(ip_address): Fügen Sie die lokale IP-Adresse zum QRCode-Objekt hinzu.
  6. qr.make(fit=True): Erzeugt ein QR-Code-Bild.
  7. qr_image = qr.make_image(fill_color="black", back_color="white"): Bild entsprechend dem QRCode-Objekt generieren, Vordergrund- und Hintergrundfarbe festlegen.
  8. temp_file = "temp_qrcode.png": Gibt den Namen der temporären Datei an.
  9. qr_image.save(temp_file): Speichern Sie das QR-Code-Bild als temporäre Datei.
  10. qr_bitmap = wx.Bitmap(temp_file, type=wx.BITMAP_TYPE_PNG): Erstellen Sie ein Bitmap-Objekt mithilfe einer temporären Datei.
  11. ip_label = wx.StaticText(panel, label=f"IP Address: {ip_address}"): Erstellen Sie ein statisches Textsteuerelement, das die IP-Adresse anzeigt.
  12. qr_bitmap_ctrl = wx.StaticBitmap(panel, bitmap=qr_bitmap): Erstellt ein statisches Bitmap-Steuerelement, das ein QR-Codebild anzeigt.
  13. sizer = wx.BoxSizer(wx.VERTICAL): Erstellt einen vertikalen Layout-Manager.
  14. sizer.Add(ip_label, 0, wx.ALL, 10): Fügt dem Layout ein IP-Adress-Textsteuerelement hinzu und legt die Ränder fest.
  15. sizer.Add(qr_bitmap_ctrl, 0, wx.ALL, 10): Fügen Sie das QR-Code-Bitmap-Steuerelement zum Layout hinzu und legen Sie den Rand fest.
  16. panel.SetSizerAndFit(sizer): Wendet einen Layout-Manager auf das Panel an.

alle Codes

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()

Schließlich erstellen wir if __name__ == '__main__':eine Instanz der wxPython-Anwendung im Block und führen die Hauptschleife der Anwendung aus ( app.MainLoop()). Dadurch wird die Fensteranwendung angezeigt und auf Benutzerinteraktion gewartet.

Im Anwendungsfenster werden die lokale IP-Adresse und der entsprechende QR-Code angezeigt, sodass Benutzer Netzwerkinformationen teilen und darauf zugreifen können.

Ich denke du magst

Origin blog.csdn.net/winniezhang/article/details/132611384
Empfohlen
Rangfolge