Python实现的二维码生成小软件
前几天,我估摸着做一个能生成QR Code小程序,并能用wxPython在屏幕上显示出来。当然,我想用纯Python实现,观望了一会后,我找到了三个候选:
github 上的 python-qrcode
sourceforge上的 pyqrcode
Goolge code 上的 pyqrnative
我尝试了python-qrcode以及pyqrnative,因为它们能够运行在Windows/Mac/Linux。也不需要依赖额外的其他库除了Python图像库。pyqrcode项目需要其他一些先决条件,并且不能在Windows上运行,所以我不想与之纠缠了。我最后使用了一些以前写过的一个Photo Viewer程序的代码,然后稍微地修改了一下,就成了QRCode的查看器了。
开始
正如我上面提到的,你只需要Python图像库,GUI部分我们将使用wxPython。python-qrcode相比pyqrnative生成图片更快,并包含了你见过的大多数QR码类型。
生成 QR Codes
当你准备好所有需要的以后,你可以运行以下代码,看看Python做了些啥:
import os import wx try: import qrcode except ImportError: qrcode = None try: import PyQRNative except ImportError: PyQRNative = None ######################################################################## class QRPanel(wx.Panel): """""" #---------------------------------------------------------------------- def __init__(self, parent): """Constructor""" wx.Panel.__init__(self, parent=parent) self.photo_max_size = 240 sp = wx.StandardPaths.Get() self.defaultLocation = sp.GetDocumentsDir() img = wx.EmptyImage(240,240) self.imageCtrl = wx.StaticBitmap(self, wx.ID_ANY, wx.BitmapFromImage(img)) qrDataLbl = wx.StaticText(self, label="Text to turn into QR Code:") self.qrDataTxt = wx.TextCtrl(self, value="http://www.mousevspython.com", size=(200,-1)) instructions = "Name QR image file" instructLbl = wx.StaticText(self, label=instructions) self.qrPhotoTxt = wx.TextCtrl(self, size=(200,-1)) browseBtn = wx.Button(self, label='Change Save Location') browseBtn.Bind(wx.EVT_BUTTON, self.onBrowse) defLbl = "Default save location: " + self.defaultLocation self.defaultLocationLbl = wx.StaticText(self, label=defLbl) qrcodeBtn = wx.Button(self, label="Create QR with qrcode") qrcodeBtn.Bind(wx.EVT_BUTTON, self.onUseQrcode) pyQRNativeBtn = wx.Button(self, label="Create QR with PyQRNative") pyQRNativeBtn.Bind(wx.EVT_BUTTON, self.onUsePyQR) # Create sizer self.mainSizer = wx.BoxSizer(wx.VERTICAL) qrDataSizer = wx.BoxSizer(wx.HORIZONTAL) locationSizer = wx.BoxSizer(wx.HORIZONTAL) qrBtnSizer = wx.BoxSizer(wx.VERTICAL) qrDataSizer.Add(qrDataLbl, 0, wx.ALL, 5) qrDataSizer.Add(self.qrDataTxt, 1, wx.ALL|wx.EXPAND, 5) self.mainSizer.Add(wx.StaticLine(self, wx.ID_ANY), 0, wx.ALL|wx.EXPAND, 5) self.mainSizer.Add(qrDataSizer, 0, wx.EXPAND) self.mainSizer.Add(self.imageCtrl, 0, wx.ALL, 5) locationSizer.Add(instructLbl, 0, wx.ALL, 5) locationSizer.Add(self.qrPhotoTxt, 0, wx.ALL, 5) locationSizer.Add(browseBtn, 0, wx.ALL, 5) self.mainSizer.Add(locationSizer, 0, wx.ALL, 5) self.mainSizer.Add(self.defaultLocationLbl, 0, wx.ALL, 5) qrBtnSizer.Add(qrcodeBtn, 0, wx.ALL, 5) qrBtnSizer.Add(pyQRNativeBtn, 0, wx.ALL, 5) self.mainSizer.Add(qrBtnSizer, 0, wx.ALL|wx.CENTER, 10) self.SetSizer(self.mainSizer) self.Layout() #---------------------------------------------------------------------- def onBrowse(self, event): """""" dlg = wx.DirDialog(self, "Choose a directory:", style=wx.DD_DEFAULT_STYLE) if dlg.ShowModal() == wx.ID_OK: path = dlg.GetPath() self.defaultLocation = path self.defaultLocationLbl.SetLabel("Save location: %s" % path) dlg.Destroy() #---------------------------------------------------------------------- def onUseQrcode(self, event): """ https://github.com/lincolnloop/python-qrcode """ qr = qrcode.QRCode(version=1, box_size=10, border=4) qr.add_data(self.qrDataTxt.GetValue()) qr.make(fit=True) x = qr.make_image() qr_file = os.path.join(self.defaultLocation, self.qrPhotoTxt.GetValue() + ".jpg") img_file = open(qr_file, 'wb') x.save(img_file, 'JPEG') img_file.close() self.showQRCode(qr_file) #---------------------------------------------------------------------- def onUsePyQR(self, event): """ http://code.google.com/p/pyqrnative/ """ qr = PyQRNative.QRCode(20, PyQRNative.QRErrorCorrectLevel.L) qr.addData(self.qrDataTxt.GetValue()) qr.make() im = qr.makeImage() qr_file = os.path.join(self.defaultLocation, self.qrPhotoTxt.GetValue() + ".jpg") img_file = open(qr_file, 'wb') im.save(img_file, 'JPEG') img_file.close() self.showQRCode(qr_file) #---------------------------------------------------------------------- def showQRCode(self, filepath): """""" img = wx.Image(filepath, wx.BITMAP_TYPE_ANY) # scale the image, preserving the aspect ratio W = img.GetWidth() H = img.GetHeight() if W > H: NewW = self.photo_max_size NewH = self.photo_max_size * H / W else: NewH = self.photo_max_size NewW = self.photo_max_size * W / H img = img.Scale(NewW,NewH) self.imageCtrl.SetBitmap(wx.BitmapFromImage(img)) self.Refresh() ######################################################################## class QRFrame(wx.Frame): """""" #---------------------------------------------------------------------- def __init__(self): """Constructor""" wx.Frame.__init__(self, None, title="QR Code Viewer", size=(550,500)) panel = QRPanel(self) if __name__ == "__main__": app = wx.App(False) frame = QRFrame() frame.Show() app.MainLoop()
python-qrcode生成效果图:
PyQRNative生成效果图:

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Dans VS Code, vous pouvez exécuter le programme dans le terminal via les étapes suivantes: Préparez le code et ouvrez le terminal intégré pour vous assurer que le répertoire de code est cohérent avec le répertoire de travail du terminal. Sélectionnez la commande Run en fonction du langage de programmation (tel que Python de Python your_file_name.py) pour vérifier s'il s'exécute avec succès et résoudre les erreurs. Utilisez le débogueur pour améliorer l'efficacité du débogage.

VS Code peut être utilisé pour écrire Python et fournit de nombreuses fonctionnalités qui en font un outil idéal pour développer des applications Python. Il permet aux utilisateurs de: installer des extensions Python pour obtenir des fonctions telles que la réalisation du code, la mise en évidence de la syntaxe et le débogage. Utilisez le débogueur pour suivre le code étape par étape, trouver et corriger les erreurs. Intégrez Git pour le contrôle de version. Utilisez des outils de mise en forme de code pour maintenir la cohérence du code. Utilisez l'outil de liaison pour repérer les problèmes potentiels à l'avance.

VS Code peut fonctionner sur Windows 8, mais l'expérience peut ne pas être excellente. Assurez-vous d'abord que le système a été mis à jour sur le dernier correctif, puis téléchargez le package d'installation VS Code qui correspond à l'architecture du système et l'installez comme invité. Après l'installation, sachez que certaines extensions peuvent être incompatibles avec Windows 8 et doivent rechercher des extensions alternatives ou utiliser de nouveaux systèmes Windows dans une machine virtuelle. Installez les extensions nécessaires pour vérifier si elles fonctionnent correctement. Bien que le code VS soit possible sur Windows 8, il est recommandé de passer à un système Windows plus récent pour une meilleure expérience de développement et une meilleure sécurité.

Les extensions de code vs posent des risques malveillants, tels que la cachette de code malveillant, l'exploitation des vulnérabilités et la masturbation comme des extensions légitimes. Les méthodes pour identifier les extensions malveillantes comprennent: la vérification des éditeurs, la lecture des commentaires, la vérification du code et l'installation avec prudence. Les mesures de sécurité comprennent également: la sensibilisation à la sécurité, les bonnes habitudes, les mises à jour régulières et les logiciels antivirus.

Python excelle dans l'automatisation, les scripts et la gestion des tâches. 1) Automatisation: La sauvegarde du fichier est réalisée via des bibliothèques standard telles que le système d'exploitation et la fermeture. 2) Écriture de script: utilisez la bibliothèque PSUTIL pour surveiller les ressources système. 3) Gestion des tâches: utilisez la bibliothèque de planification pour planifier les tâches. La facilité d'utilisation de Python et la prise en charge de la bibliothèque riche en font l'outil préféré dans ces domaines.

VS Code est le code Visual Studio Nom complet, qui est un éditeur de code multiplateforme gratuit et open source et un environnement de développement développé par Microsoft. Il prend en charge un large éventail de langages de programmation et fournit une mise en surbrillance de syntaxe, une complétion automatique du code, des extraits de code et des invites intelligentes pour améliorer l'efficacité de développement. Grâce à un écosystème d'extension riche, les utilisateurs peuvent ajouter des extensions à des besoins et des langues spécifiques, tels que les débogueurs, les outils de mise en forme de code et les intégrations GIT. VS Code comprend également un débogueur intuitif qui aide à trouver et à résoudre rapidement les bogues dans votre code.

VS Code peut non seulement exécuter Python, mais fournit également des fonctions puissantes, notamment: l'identification automatique des fichiers Python après l'installation d'extensions de Python, fournissant l'achèvement du code, la mise en évidence de la syntaxe, le débogage et d'autres fonctions. S'appuyant sur l'environnement Python installé, les extensions agissent comme l'édition de connexion de pont et l'environnement Python. Les fonctions de débogage incluent le réglage des points d'arrêt, le débogage étape par étape, la visualisation des valeurs variables et l'amélioration de l'efficacité de débogage. Le terminal intégré prend en charge l'exécution de commandes complexes telles que les tests unitaires et la gestion des packages. Prend en charge la configuration étendue et améliore les fonctionnalités telles que la mise en forme du code, l'analyse et le contrôle de version.

Python convient plus aux débutants, avec une courbe d'apprentissage en douceur et une syntaxe concise; JavaScript convient au développement frontal, avec une courbe d'apprentissage abrupte et une syntaxe flexible. 1. La syntaxe Python est intuitive et adaptée à la science des données et au développement back-end. 2. JavaScript est flexible et largement utilisé dans la programmation frontale et côté serveur.
