使用Python的PyQt5+qrcode模块生成自己的个性化二维码(二)
2019-03-13 19:54
190 查看
把之前的生成二维码的程序改进了一下,不用苦逼的自己输入文件名称了
上一版本的链接
改动的内容
其实就是引入了QFileDialog类,可以操作文件对话框,进行文件的打开和保存,用到的两个方法:
QFileDialog.getOpenFileName(self, str1, str2, str3)
执行之后会弹出一个打开文件的对话框,其中str1是对话框的标题,str2是默认的打开路径,str3是文件类型限制,返回一个二元元组,第一个元素是str类型的文件名字符串,第二个元素是bool值。
QFileDialog.getSaveFileName(self, str1, str2, str3)
执行之后打开一个“保存文件”的对话框,各个参数的和返回的值与open方法相同。
代码
import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import * from qrcode import QRCode, ERROR_CORRECT_H from PIL import Image class Qr_qt(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle("二维码生成") self.setWindowIcon(QIcon('10.jpg')) self.lab1 = QLabel('请输入二维码的内容') self.text1 = QLineEdit('内容', self) self.text1.selectAll() self.bt1 = QPushButton('选择图片', self) self.bt1.setToolTip("<b>点击按钮选择要插入的图片</b>") self.bt1.clicked.connect(self.chooseImage) self.bt2 = QPushButton('生成', self) self.bt2.setToolTip("<b>点击按钮生成二维码</b>") self.bt2.clicked.connect(self.createQr) grid = QGridLayout() grid.addWidget(self.lab1, 0, 0) grid.addWidget(self.text1, 0, 1) grid.addWidget(self.bt1, 1, 0) grid.addWidget(self.bt2, 1, 1) self.setLayout(grid) self.show() def chooseImage(self): self.fname, jud = QFileDialog.getOpenFileName(self, '打开文件', './', "Image Files (*.jpg *.png)") def createQr(self): qr = QRCode(version = 1, error_correction = ERROR_CORRECT_H, border = 2) qr.add_data(self.text1.text()) qr.make(fit = True) img = qr.make_image() img = img.convert("RGB") try: logo = Image.open(self.fname) w, h = img.size logo_w = int(w/4) logo_h = int(h/4) rel_w = int((w-logo_w)/2) rel_h = int((h-logo_h)/2) logo = logo.resize((logo_w, logo_h), Image.ANTIALIAS) logo = logo.convert("RGBA") img.paste(logo, (rel_w, rel_h), logo) finame, jud = QFileDialog.getSaveFileName(self, '保存文件', './', "Image Files (*.jpg *.png)") if jud and img: img.save(finame) except: QMessageBox.about(self, 'Error', 'No Such a File') if __name__ == '__main__': app = QApplication(sys.argv) qr = Qr_qt() sys.exit(app.exec_())
这样操作就方便多了。
相关文章推荐
- Python使用QRCode模块生成二维码
- Python使用QRCode模块生成二维码
- Python使用QRCode模块生成二维码
- Python使用QRCode模块生成二维码
- Python下使用qrcode模块生成vCard电子名片二维码图片
- Python使用QRCode模块生成二维码
- Python使用QRCode模块生成二维码
- Python使用QRCode模块生成二维码
- Python使用QRCode模块生成二维码实例详解
- Python使用QRCode模块生成二维码
- Python使用QRCode模块生成二维码
- Python使用QRCode模块生成二维码
- Python使用QRCode生成二维码
- Python使用QRCode生成二维码
- 使用Sphinx为你的python模块自动生成文档
- [Python模块学习]用qrcode模块生成二维码
- 使用python pillow模块生成随机验证码
- 使用python生成二维码的HTML文本
- Python 使用Pillow模块生成验证码
- 用python生成(动态彩色)二维码的方法(使用myqr库实现)