设计背景:
随着智能手机的普及二维码的使用也越来越广泛,二维码的样式从一开始的黑白方块演变成各式各样的独具特色的二维码,有彩色的、有圆角的,也有各种图案的,还一种更酷的——那就是动态的二维码。
你想不想自己也拥有一个这样的二维码呢?我想答案是肯定的。那么找谁帮我们做一个这样的动态二维码呀?不用急!有了Mind+用不着求别人。让我们自己就能做,下面跟着我一起动手做吧!
功能原理:
下面就是一款生成动态二维码的python程序。这是完全使用Mind+环境开发的。该程序主要功能来自MyQR模块,它是一个能够生成自定义二维码的python第三方库,它能根据我们的需要生成普通二维码、带背景图片的艺术二维码和动态二维码。软件界面使用了PyQt5库。
注意:以上两个库需要我们自己安装。
下面我们来一起看一看编写软件的全过程吧:
步骤1 运行Mind+软件后切换到python模式。
步骤2 在“库管理”中找到“数据处理”下的MyQR和“界面”中的“PyQt5”点击“安装”按钮。
步骤3 创建项目“极酷二维码”,新建文件:jkerweima.py,编写程序。
步骤4 点击“运行”按钮运行软件。
步骤5 软件启动后按如下步骤操作。
1、标题用于保存二维码文件时的文件名,不用写扩展名。
2、内容框中填写要在二维码中保存的信息,比如微信号或者网站地址。
3、背景可以是jpg,png,gif图片。MyQR模块的最有特色的功能就是使用gif图片做动态的二维码了,jpg和png格式的图片为静态图片,不能用于动态二维码。
4、选择生成的二维码是彩色还是黑白。
5、点击生成二维码。
6、点击“保存”按钮后可以把新生成的二维码保存起来。
# -*- coding: utf-8 -*-
import sys
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from MyQR import myqr
import shutil #这个库复制文件比较省事
class coolqr(QWidget):
def __init__(self):
super(coolqr, self).__init__()
self.resize(340, 520) #窗口大小
self.setWindowTitle("极酷二维码")
self.qr = QLabel(self) # 在一个Label控件中显示二维码
#self.qr.setText("极酷二维码")
self.qr.setPixmap(QtGui.QPixmap("MyQR.gif").scaled(300,300)) # 二维码初始显示设置
self.qr.setFixedSize(300, 300)
self.qr.move(20, 20)
self.label1 = QLabel(self)
self.label1.setText("标题:")
self.label1.move(20, 340)
self.label2 = QLabel(self)
self.label2.setText("内容:")
self.label2.move(20, 370)
self.label3 = QLabel(self)
self.label3.setText("背景:")
self.label3.move(20, 400)
self.label2 = QLabel(self)
self.label2.setText("颜色:")
self.label2.move(20, 430)
self.t_name = QLineEdit(self)
self.t_name.move(60,335)
self.t_name.resize(240,20)
self.t_name.setText("MyQrCode")
self.t_content = QLineEdit(self)
self.t_content.move(60,365)
self.t_content.resize(240,20)
self.t_content.setPlaceholderText('请在此输入二维码识别的内容...')
self.t_content.setFocus() #使内容框获得焦点
self.btn_img = QPushButton(self)
self.btn_img.setText(" 选择背景图片... ")
self.btn_img.move(60, 395)
self.btn_img.clicked.connect(self.openimage)
self.rb1 = QRadioButton('彩色',self)
self.rb1.setChecked(True)
self.rb2 = QRadioButton('黑白',self)
self.rb1.move(60,430)
self.rb2.move(120,430)
self.bg = QButtonGroup(self)
self.bg.addButton(self.rb1, 1)
self.bg.addButton(self.rb2, 2)
self.bg.buttonClicked.connect(self.rbclicked)
self.btn_generate = QPushButton(self)
self.btn_generate.setText("生成")
self.btn_generate.move(70, 460)
self.btn_generate.clicked.connect(self.generate)
self.btn_save = QPushButton(self)
self.btn_save.setText("保存")
self.btn_save.move(200, 460)
self.btn_save.clicked.connect(self.saveimg)
self.rb = True
self.imgname='0.png'
def rbclicked(self):
if self.rb1.isChecked() == True:
self.rb=True
else:
self.rb=False
def openimage(self):
imgName, imgType = QFileDialog.getOpenFileName(self, "打开图片", "", "*.jpg;;*.png;;*.gif;;All Files(*)")
jpg = QtGui.QPixmap(imgName).scaled(self.qr.width(), self.qr.height())
self.qr.setPixmap(jpg)
self.imgname=imgName
def generate(self):
t=self.t_content.text()
p=self.imgname
c=self.rb
s=self.t_name.text()+'.gif'
if t=='':
t='CoolQrCode'
myqr.run(words=t,
picture=p,
colorized=c,
save_name=s,
)
self.qr.setPixmap(QtGui.QPixmap(s).scaled(300,300))
def saveimg(self):
filename = QFileDialog.getSaveFileName(self, "保存二维码", "MyQRCode", "GIF文件 (*.gif)")[0]
s = self.t_name.text() + '.gif'
shutil.copy(s, filename)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
my = coolqr()
my.show()
sys.exit(app.exec_())
评论