Pyqt+QRcode 生成二维码

python生成二维码是件很简单的事,使用第三方库Python QRCode就可生成二维码,我用Pyqt给QRcode打个壳

一.python-qrcode介绍

python-qrcode是个用来生成二维码图片的第三方模块,依赖于 PIL 模块和 qrcode 库。

PIL下载地址:

https://pypi.python.org/pypi/PIL/1.1.6         或

http://www.pythonware.com/products/pil/

qrcode下载地址:

https://pypi.python.org/pypi/qrcode

安装:

1 python setup.py install 

简单用法

1 import qrcode
2 img = qrcode.make(‘hello, qrcode‘)
3 img.save(‘test.png‘)

高级用法

 1 import qrcode
 2 qr = qrcode.QRCode(
 3     version=1,
 4     error_correction=qrcode.constants.ERROR_CORRECT_L,
 5     box_size=10,
 6     border=4,
 7 )
 8 qr.add_data(‘hello, qrcode‘)
 9 qr.make(fit=True)
10 img = qr.make_image()
11 img.save(‘test.png‘)

参数说明:


version:值为1~40的整数,控制二维码的大小(最小值是1,是个12×12的矩阵)。 如果想让程序自动确定,将值设置为 None 并使用 fit 参数即可。

error_correction:控制二维码的错误纠正功能。可取值下列4个常量。
  ERROR_CORRECT_L:大约7%或更少的错误能被纠正。
  ERROR_CORRECT_M(默认):大约15%或更少的错误能被纠正。
  ROR_CORRECT_H:大约30%或更少的错误能被纠正。

box_size:控制二维码中每个小格子包含的像素数。

border:控制边框(二维码与图片边界的距离)包含的格子数(默认为4,是相关标准规定的最小值)

二. 打壳

做一个Ui转换为Py文件, import qrcode 后就可以生成二维码了

完整代码如下:

  1 # -*- coding: utf-8 -*-
  2
  3 # Form implementation generated from reading ui file ‘Qrcode.ui‘
  4 #
  5 # Created: Thu Jan 22 09:32:41 2015
  6 #      by: PyQt4 UI code generator 4.10.3
  7 #
  8 # WARNING! All changes made in this file will be lost!
  9
 10 from PyQt4 import QtCore, QtGui
 11
 12 try:
 13     _fromUtf8 = QtCore.QString.fromUtf8
 14 except AttributeError:
 15     def _fromUtf8(s):
 16         return s
 17
 18 try:
 19     _encoding = QtGui.QApplication.UnicodeUTF8
 20     def _translate(context, text, disambig):
 21         return QtGui.QApplication.translate(context, text, disambig, _encoding)
 22 except AttributeError:
 23     def _translate(context, text, disambig):
 24         return QtGui.QApplication.translate(context, text, disambig)
 25
 26 class Ui_qrcode(object):
 27     def setupUi(self, qrcode):
 28         qrcode.setObjectName(_fromUtf8("qrcode"))
 29         qrcode.setEnabled(True)
 30         qrcode.resize(515, 424)
 31         self.groupBoxshow = QtGui.QGroupBox(qrcode)
 32         self.groupBoxshow.setGeometry(QtCore.QRect(50, 120, 431, 281))
 33         sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
 34         sizePolicy.setHorizontalStretch(0)
 35         sizePolicy.setVerticalStretch(0)
 36         sizePolicy.setHeightForWidth(self.groupBoxshow.sizePolicy().hasHeightForWidth())
 37         self.groupBoxshow.setSizePolicy(sizePolicy)
 38         self.groupBoxshow.setMinimumSize(QtCore.QSize(0, 0))
 39         self.groupBoxshow.setAutoFillBackground(True)
 40         self.groupBoxshow.setCheckable(False)
 41         self.groupBoxshow.setObjectName(_fromUtf8("groupBoxshow"))
 42         self.label = QtGui.QLabel(self.groupBoxshow)
 43         self.label.setGeometry(QtCore.QRect(10, 20, 401, 241))
 44         self.label.setText(_fromUtf8(""))
 45         self.label.setObjectName(_fromUtf8("label"))
 46         self.groupBox = QtGui.QGroupBox(qrcode)
 47         self.groupBox.setGeometry(QtCore.QRect(50, 20, 431, 91))
 48         self.groupBox.setObjectName(_fromUtf8("groupBox"))
 49         self.horizontalLayoutWidget = QtGui.QWidget(self.groupBox)
 50         self.horizontalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 401, 80))
 51         self.horizontalLayoutWidget.setObjectName(_fromUtf8("horizontalLayoutWidget"))
 52         self.horizontalLayout = QtGui.QHBoxLayout(self.horizontalLayoutWidget)
 53         self.horizontalLayout.setMargin(0)
 54         self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
 55         self.label_url = QtGui.QLabel(self.horizontalLayoutWidget)
 56         self.label_url.setObjectName(_fromUtf8("label_url"))
 57         self.horizontalLayout.addWidget(self.label_url)
 58         self.lineEditInput = QtGui.QLineEdit(self.horizontalLayoutWidget)
 59         self.lineEditInput.setObjectName(_fromUtf8("lineEditInput"))
 60         self.horizontalLayout.addWidget(self.lineEditInput)
 61         self.pushButtonOk = QtGui.QPushButton(self.horizontalLayoutWidget)
 62         self.pushButtonOk.setObjectName(_fromUtf8("pushButtonOk"))
 63         self.horizontalLayout.addWidget(self.pushButtonOk)
 64
 65         self.retranslateUi(qrcode)
 66         QtCore.QMetaObject.connectSlotsByName(qrcode)
 67
 68     def retranslateUi(self, qrcode):
 69         qrcode.setWindowTitle(_translate("qrcode", "Pyqt Qrcode", None))
 70         self.groupBoxshow.setTitle(_translate("qrcode", "二维码显示", None))
 71         self.groupBox.setTitle(_translate("qrcode", "填写二维码内容", None))
 72         self.label_url.setText(_translate("qrcode", "URL地址:", None))
 73         self.pushButtonOk.setText(_translate("qrcode", "生成二维码", None))
 74
 75
 76 import qrcode
 77 class showQr(QtGui.QWidget):
 78     def __init__(self):
 79         super(showQr, self).__init__()
 80         self.ui_qr = Ui_qrcode()
 81         self.ui_qr.setupUi(self)
 82         # PyQT禁止窗口最大化按钮:
 83         self.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint)
 84         # PyQT禁止调整窗口大小:
 85         self.setFixedSize(self.width(), self.height())
 86
 87         # 触发信号槽
 88         QtGui.QWidget.connect(self.ui_qr.pushButtonOk, QtCore.SIGNAL(‘clicked()‘), self.generateQr)
 89         # self.ui_qr.pushButtonOk.clicked.connect(self.generateQr)
 90
 91     def generateQr(self):
 92         textcontent=self.ui_qr.lineEditInput.text()
 93         if textcontent==‘‘:
 94             QtGui.QMessageBox.information(self, (u‘提示‘),(u‘请填写URL地址‘),QtGui.QMessageBox.Yes)
 95         else:
 96             filename=‘Qrcode.png‘
 97             qr = qrcode.QRCode(
 98                 version=None,
 99                 error_correction=qrcode.constants.ERROR_CORRECT_L,
100                 box_size=5,
101                 border=4,
102             )
103             qr.add_data(textcontent)
104             qr.make(fit=True)
105             img = qr.make_image()
106             img.save(filename)
107             # img = qrcode.make(textcontent)
108             # img.save(filename)
109             self.ui_qr.label.setPixmap(QtGui.QPixmap(filename))
110
111
112
113      # 重载keyPressEvent ,  当按下Esc退出
114     def keyPressEvent(self, event):
115         if event.key() ==QtCore.Qt.Key_Escape:
116             self.close()
117
118
119 if __name__ == "__main__":
120     import sys
121     app = QtGui.QApplication(sys.argv)
122     qr = showQr()
123     qr.show()
124     sys.exit(app.exec_())

运行效果:

时间: 2024-10-16 17:26:53

Pyqt+QRcode 生成二维码的相关文章

asp.net(C#)利用QRCode生成二维码(续)-在二维码图片中心加Logo或图像 .

<%@ WebHandler Language="C#" Class="GetQRCode" %> using System; using System.Web; using ThoughtWorks.QRCode.Codec; using ThoughtWorks.QRCode.Codec.Data; using ThoughtWorks.QRCode.Codec.Util; using System.IO; using System.Text; us

C# 利用QRCode生成二维码图片

引用LYBwwp的博文http://blog.csdn.net/lybwwp/article/details/18444369 网上生成二维码的组件是真多,可是真正好用的,并且生成速度很快的没几个,QRCode就是我在众多中找到的,它的生成速度快.但是网上关于它的使用说明,真的太少了,大都是千篇一律的复制粘贴.这是本要用它做了一个项目后,简单的整理了一下. 组件下载地址:http://download.csdn.net/detail/lybwwp/6861821 下载文件包包含ThoughtWo

Qrcode生成二维码的参数总结 及最小尺寸的测试

Qrcode生成二维码,做过很多实验,探索最小规格的二维码到底是多少尺寸,和最高规格的二维码到底是多大尺寸.现在我总结总结: 有两种思路: 1.生成规格高的二维码,然后压缩到自己想要的尺寸的二维码.这种:压缩算法不好的时候会很坑爹. 2.根据调整的参数生成原图,这种图是比较清晰的,打印出来都可以很好的被识别. 先说说第二种吧:根据测试, 1.不设置任何东西时:根据测试 最小的二维码尺寸是45--47:宽高(对于1---14个字符), 第二梯度:54-56:宽高(对于15--26字符) 第三梯度:

python_使用qrcode生成二维码

1.功能 使用qrcode生成二维码 2.代码 #生成二维码: import qrcode #根据url生成二维码 def qrcodeWithUrl(url): img = qrcode.make(url) savePath = "1.png" img.save(savePath) #根据输入的文字生成二维码 def qrcodeWithText(text): img = qrcode.make(text) savePath = "2.png" img.save(

使用jquery.qrcode生成二维码实现微信分享功能

前言: 最近有个这样的需求,在pc端的商品详情页增加分享功能. 微博分享.QQ好友分享.QQ空间分享这些都很常见.但是微信分享我还没有手动写过(以前改过). 最终效果如下图: 解决方案:使用jquery.qrcode插件生成二维码 jquery.qrcode cdn地址 参见: https://www.bootcdn.cn/jquery.qrcode/ 1.加载 jQuery 和 jquery.qrcode.js: <script src="https://cdn.bootcss.com/

C# winform通过ThoughtWorks.QRCode生成二维码解码可以添加logo

首先要下载ThoughtWorks.QRCode.dll文件,添加引用. ThoughtWorks.QRCode.dll下载,点击下载 界面如下: 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Win

ThoughtWorks.QRCode生成二维码

首先引用需要的dll,此处使用的是ThoughtWorks.QRCode.dll,网上可以找到对应的,此处也有一份,点击下载 http://files.cnblogs.com/files/ives/ThoughtWorks.QRCode.zip 接下来添加引用,不明白的网上文章很多. 关键代码如下 Bitmap bt; string enCodeString = "http://sheyouyun.com"; QRCodeEncoder qrCodeEncoder = new QRCo

使用QRCode生成二维码

官网网址:http://code.ciaoca.com/javascript/qrcode/ 简介: QRCode.js是一个专门用于生成二维码的javascript库,主要是通过获取 DOM 的标签,再通过H5Canvas绘制而成,不依赖任何库(包括jquery),在官网上有对其详细的介绍,建议参考官网! 使用: 使用的时候分两种情况,一种是简单使用方式,生成二维码的大小包括其他一些东西由其默认,另一种是自定义各个参数 基本使用: New QRCode(document.getElemetBy

qrcode生成二维码插件

今天我要和大家分享的是利用qrcode来生成二维码. 首先要使用qrcode就需要引用文件,我这边用的是1.7.2版本的jquery加上qrcode <script type="text/javascript" src="jquery-1.7.2.min.js"></script><script type="text/javascript" src="jquery.qrcode.min.js"&g