找回密码
 立即注册
Qt开源社区 门户 查看内容

PyQt5+qrcode应用(二)

2019-3-17 05:23| 发布者: admin| 查看: 553| 评论: 0

摘要: 把上一个图形化界面生成二维码的程序改进了一下,可以直接在对话框里选择文件,而不是自己输入文件名,操作方便了很多。附上代码:importsysfromPyQt5.QtWidgetsimport*fromPyQt5.QtCoreimport*fromPyQt5.QtGuiimpor ...
把上一个图形化界面生成二维码的程序改进了一下,可以直接在对话框里选择文件,而不是自己输入文件名,操作方便了很多。

附上代码:
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_())


知识点什么的完整的记录见博客:

https://blog.csdn.net/pp5354chun/article/details/88539905




- THE END -

----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:秦小炅,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了