自己的第一篇博客,好激动!
今天兴致来了,就捣鼓了一下久见却没玩过的PyQt,在此做个小笔记,便于今后查找使用。
1 安装包
安装pyqt5、pyqt5-tools、pyinstaller。
可以在C:\ProgramData\Anaconda3\envs\newroot\Lib\site-packages\pyqt5_tools下找到designer.exe。
但在安装包的过程中,注意pyqt5、pyqt5-tools的版本,否则会导致spyder无法打开。我先装的5.14,后来降到5.10才可以用。
pip install pyqt5==5.10.1
pip install pyqt5-tools==5.10.1.1.4
pip install pyinstaller
2 界面设计
个人感觉与C#没有本质区别,暂时只实验了Button,其他的等以后实验过后再详细记录。
3 Spyder编辑
.ui转为.py后才可以使用Spyder编辑。
#.ui转.py
pyuic5 -o I:\1实验室\其他\QTtest\untitled.py I:\1实验室\其他\QTtest\untitled.ui
新建.py文件,在其中添加如下代码才可使用Spyder运行GUI。QtWidgets.QDialog中的QDialog需要换为适合于你所涉及的GUI窗体,否则会报错;from untitled import Ui_Dialog中,untitled为窗体文件的文件名,Ui_Dialog为窗体名称,记得切换Spyder的路径为untitled.ui所在路径;self.btn_ok.clicked.connect(self.printWords)为自己建的Button调用printWords函数,这一步非必须,是自己添加的。
from PyQt5 import QtWidgets
from untitled import Ui_Dialog
class mywindow(QtWidgets.QDialog, Ui_Dialog):
def __init__ (self):
super(mywindow, self).__init__()
self.setupUi(self)
self.btn_ok.clicked.connect(self.printWords)
def printWords(self):
#显示文字
words = "finished!"
self.label.setText(words)
if __name__=="__main__":
import sys
app=QtWidgets.QApplication(sys.argv)
ui = mywindow()
ui.show()
sys.exit(app.exec_())
4 封装
#.exe可执行文件的封装
# -F:将所有内容全部打包成一个exe可执行文件。
# -w:运行生成的exe文件时,不会弹出命令行窗口,而是直接弹出GUI。
pyinstaller -F -w I:\1实验室\其他\QTtest\run.py
封装的时候出现闪退和360提示阻止信息,建议添加信任之后再重新执行封装;闪退可能是由于Dos没有切换到源代码的路径导致的。
看到有的小伙伴说,复制plugins/Platforms的文件到.exe文件旁,但我测试了还是没有用;添加input及os.system("pause")也没有用,还报错“faild execute script run”;然而最后切换目录之后就可行了(没有闪退)。