SiriBlog

siriyang的个人博客


  • 首页

  • 排行榜

  • 标签115

  • 分类37

  • 归档319

  • 关于

  • 搜索

使用pyqt制作二维码生成器

发表于 2020-04-11 更新于 2021-10-29 分类于 计算机 , 技术 , Python 阅读次数: Valine:
本文字数: 3.6k 阅读时长 ≈ 3 分钟

Note1

  要将写好的python代码打包成exe可执行文件,需要使用pyinstaller。可直接使用pip install pyinstaller进行安装。

  使用时可以选择-F和-D两种命令,可分别打包为单个文件或带dll等依赖文件的文件夹。

  更多使用方法参考:Python PyInstaller安装和使用教程(详解版)


Note2

  在打包后运行可执行文件,报错找不到sip模块。结局方案为安装sip模块,然后在代码中导入import sip即可。


Note3

  在打包后运行可执行文件,报错:

1
2
3
4
This application failed to start because it could not find or load the Qt platform plugin "windows"
in "".

Reinstalling the application may fix this problem.

  解决方案为,使用Everything文件搜索软件在在pyqt安装环境中搜索platforms文件夹,然后把文件夹拷贝到可执行文件目录下即可。
  例如我的路径为:

1
D:\Anaconda3\pkgs\qt-5.6.2-vc14_6\Library\plugins\platforms

参考资料:使用 pyinstaller 打包 PyQt 错误的解决方案


Note4

  在使用pyqt继承创建自己的窗口类时发生报错:

1
TypeError: descriptor '__init__' of 'super' object needs an argument

  原因是构造函数代码有误:

1
2
-super.__init__()
+super().__init__()

Note5

  将PIL图片转换为QImage图片

1
2
3
4
5
def PILimageToQImage(pilimage):
"""converts a PIL image to QImage"""
imageq = ImageQt(pilimage) # convert PIL image to a PIL.ImageQt object
qimage = QImage(imageq) # cast PIL.ImageQt object to QImage object -that´s the trick!!!
return qimage

Note6

  关闭使用pyinstaller打包后运行出现的命令行窗口:

  • 方法一:pyinstaller -F mycode.py —noconsole

  • 方法二:pyinstaller -F -w mycode.py (-w就是取消窗口)

参考资料:Pyinstaller 打包exe文件 取消dos窗口(黑框框)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# -*- coding:utf-8 -*-
"""
@author:SiriYang
@file:main.py
@time:2020/4/11 13:55
"""

import sys
import sip
import qrcode

from PIL.ImageQt import ImageQt

from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QImage
from PyQt5.QtWidgets import QApplication, QVBoxLayout,QHBoxLayout, QLabel, QWidget ,QPushButton,QLineEdit

class MainWindow(QWidget):

def __init__(self):
super().__init__()

self.pilimg=None

self.iniUI()

def iniUI(self):
self.resize(500, 400)
self.setMinimumSize(500, 400)
self.move(int((QApplication.desktop().width() - self.width()) / 2),
int((QApplication.desktop().height() - self.height()) / 2))
self.setWindowTitle('二维码生成器')

self.imgLabel=QLabel("请输入链接")
self.imgLabel.setAlignment(Qt.AlignCenter)

self.linkEdit=QLineEdit()
self.linkEdit.setFixedSize(300,30)

self.generateBtn=QPushButton("生成")
self.generateBtn.setFixedHeight(30)
self.generateBtn.clicked.connect(self.generate)

hlayout=QHBoxLayout()
hlayout.addWidget(self.linkEdit)
hlayout.addWidget(self.generateBtn)

self.saveBtn=QPushButton("保存")
self.saveBtn.setFixedHeight(30)
self.saveBtn.clicked.connect(self.save)
self.saveBtn.setEnabled(False)

mainlayout=QVBoxLayout()
mainlayout.addWidget(self.imgLabel)
mainlayout.addLayout(hlayout)
mainlayout.addWidget(self.saveBtn)

self.setLayout(mainlayout)

def generate(self):
if(self.linkEdit.text()==""):
return
self.saveBtn.setEnabled(True)
link=self.linkEdit.text()
self.pilimg=qrcode.make(link)
qimg=self.PILimageToQImage(self.pilimg)
self.imgLabel.setPixmap(QPixmap.fromImage(qimg))

def PILimageToQImage(self,pilimage):
"""converts a PIL image to QImage"""
imageq = ImageQt(pilimage) # convert PIL image to a PIL.ImageQt object
qimage = QImage(imageq) # cast PIL.ImageQt object to QImage object -that´s the trick!!!
return qimage

def save(self):
tmp=self.pilimg
tmp.save('QRCode.jpg')

def main():
app = QApplication(sys.argv)
mw = MainWindow()
mw.show()
sys.exit(app.exec_())

if __name__ == '__main__':
main()
-------- 本文结束 感谢阅读 --------
相关文章
  • 基于pyqt的图片批量文字标注程序
  • SiriPR_Python开发中遇到的问题
  • 中医药天池大数据竞赛--中药说明书实体识别挑战
  • NLP综合实践(三)
  • NLP综合实践(二)
觉得文章写的不错的话,请我喝瓶怡宝吧!😀
SiriYang 微信支付

微信支付

SiriYang 支付宝

支付宝

  • 本文标题: 使用pyqt制作二维码生成器
  • 本文作者: SiriYang
  • 创建时间: 2020年04月11日 - 14时04分
  • 修改时间: 2021年10月29日 - 18时10分
  • 本文链接: https://blog.siriyang.cn/posts/20204011143656id.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
学习笔记 Python pyqt
Pythonista中文文档:canvas
Pythonista中文文档:photos
SiriYang

SiriYang

努力搬砖攒钱买镜头的摄影迷
319 日志
33 分类
88 标签
RSS
GitHub E-Mail
Creative Commons
Links
  • 友情链接
  • 作品商铺

蜀ICP备19008337号 © 2019 – 2025 SiriYang | 1.7m | 25:41
0%