说明:这里我做个记录方便查阅,也为大家做个分享,希望大家多多支持。
注意:该教程以 Python程序打包 (Windows与Linux) 为基础。
我们进入
PMPyQt
环境包中,安装PyQt
相关模块
pip install PyQt5 pyqt5-tools
这里我安装的Community版,官网下载地址:Pycharm
安装过程不赘述,这里记得有一个别打勾,别问我为什么:
打开软件,在
D盘
新建一个文件夹PythonProjects
存放项目文件,新建一个PMSoft_WorkRport
项目,进入Previously configured interpreter
设置D:\ProgramData\Miniconda3\python.exe
:
确定
Previously configured interpreter
后,再次进入Previously configured interpreter
就能看到我们创建的PMPyQt
环境包了:
我们将我们上一次的测试代码添加进去测试,成功运行:
在
File--Setting--Edit--File and Code Templates
中找到Python Script
项,复制以下内容到此(别忘了修改Author
作者名称为你自己!!):
#!/usr/bin/env python
# _*_ coding: utf-8 _*_
# @Time : ${DATE} ${TIME}
# @Author : PoetMilk
# @Version:V 1.0
# @File : ${NAME}.py
# @desc :
为了方便软件的编写,我们设置几个插件到
Pycharm
当中,打开pycharm
的这个位置:File--Setting--Tools--External Tools
,点击加号进行添加插件:
添加:
designer
(ui设计师)
位置:D:\ProgramData\Miniconda3\envs\PMPyQt\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
工作目录:$FileDir$
添加:
pyuic5
(ui文件转程序文件)
位置:D:\ProgramData\Miniconda3\envs\PMPyQt\Scripts\pyuic5.exe
参数:$FileName$ -o ui_$FileNameWithoutExtension$.py
(这里ui程序文件默认前面加上ui_
)
工作目录:$FileDir$
添加:
pyrcc5
(资源引用相关插件)
位置:D:\ProgramData\Miniconda3\envs\PMPyQt\Scripts\pyrcc5.exe
参数:$FileName$ -o $FileNameWithoutExtension$_rc.py
(这里rc资源文件默认后面加上_rc
)
工作目录:$FileDir$
添加:
pyinstaller
(打包插件)
位置:D:\ProgramData\Miniconda3\envs\PMPyQt\Scripts\pyinstaller.exe
参数:-F -w $FileName$
工作目录:$FileDir$
首先打开我们刚刚添加的
designer
UI设计师插件,在Tools--pyqt--designer
:
打开后我们选择不带按钮的窗口
Dialog without Buttons
,点击创建
按钮:
这时可以看到我们创建出来的
Dialog
界面,我们鼠标拖一个Push Button
按钮到窗口里:
拖进按钮之后我们鼠标左键单击点一下选中按钮,可以在右边属性编辑器里看到我们按钮的
objectName
属性为pushButton
。这就是这个按钮对象的名字,这个名字也可以改(当然只能改英文),记住这个名字,后面我们会用到:
> 同理,鼠标点击我们创建的窗口空白处,选中我们的窗口对象,我们将窗口对象名称改成Mainwindow
:
点击左上角的保存,因为是UI,并且是主界面,我们名称设为:
UI_Mainwindow.ui
界面文件是创建好了,但是它不是一个
.py
后缀的python文件,它是一个.ui
后缀的文件。这时就需要用到我们添加的另一个插件:pyuic5
,它可以将我们的.ui
文件转换成.py
文件,这样我们等会才可以使用我们刚刚创建的这个界面。
回到
pycharm
,我们将鼠标放在该.ui
文件上按鼠标右键,然后在pyqt
中点击pyuic5
界面文件到此就完成了:
界面我们是创建好了,但是这个
ui_UI_Mainwindow.py
文件只是一个界面文件,我们需要一个界面类
作为载体,把他包含进来。
我们将鼠标放在工程名上右键,创建一个
UI_Mainwindow.py
类文件:
UI_Mainwindow
类的代码如下,懂python
类的同学应该都能看得懂,这里把我们之前创建的界面文件ui_UI_Mainwindow
引入到主界面类UI_Mainwindow
中去了:
from PyQt5.QtWidgets import QDialog
from ui_UI_Mainwindow import Ui_Mainwindow
class UI_Mainwindow(QDialog, Ui_Mainwindow):
def __init__(self, parent=None):
super().__init__()
self.setupUi(self)
我们将之前创建的
main.py
文件中的内容进行修改,这里我们将我们创建的UI_Mainwindow
类实例化,并且利用QApplication
让我们的界面显示出来:
from sys import exit, argv
from PyQt5.QtWidgets import QApplication
from UI_Mainwindow import UI_Mainwindow
if __name__ == '__main__':
app = QApplication(argv)
ui_main_window = UI_Mainwindow()
ui_main_window.show()
exit(app.exec_())
愣着干嘛,赶紧点击右上方的
三角运行符号
运行测试啊~!!
成功显示界面,激动不激动!!
界面是显示了,但是你会发现点击按钮是没有任何作用的。
我们现在要实现:点击按钮,弹出一个消息框的功能。
弹窗其实就是一个调用了一个弹窗函数
# 需引入模块
from PyQt5.QtWidgets import QMessageBox
# 弹窗函数
QMessageBox.information(self, "标题", "我很喜欢学习python")
让我们来梳理一下:点击按钮 --> 触发弹窗。但是怎么实现这整个流程呢?
这就需要用到我们Qt中的机制:信号与槽。
- 简单来说就是刚刚你拖进来的那个按钮,它有一个信号叫
clicked
,这个信号会在你点击按钮的时候触发。- 我们将它与槽函数(槽函数是一个特殊的函数,用于信号触发的时候执行)相连接。
- 然后我们把弹窗的函数写到槽函数内,这样我们点击按钮的时候就会弹窗了。
说干就干,我们添加一个槽函数到UI_Mainwindow
类中(因为弹窗是点击UI_Mainwindow
类里的按钮触发的显示在UI_Mainwindow
类窗口中的弹窗),函数名我是以Slot_
开头的用于说明它是槽函数:
# 需引入模块
from PyQt5.QtWidgets import QMessageBox
# 按钮槽函数
def Slot_BtnClicked(self):
# 弹窗函数
QMessageBox.information(self, "标题", "我很喜欢学习python")
我们将信号与槽连起来,注意要指明你的按钮名,我的按钮名是:
pushButton
我们将连接信号与槽的代码写到UI_Mainwindow
类的构造函数中,这样这个类实例化的时候就完成连接了。
# 连接信号与槽
self.pushButton.clicked.connect(self.Slot_BtnClicked)
OK!我们点击运行开始测试,点击按钮成功弹窗!!!
回到
pycharm
,我们将鼠标放在该main.py
文件上按鼠标右键,然后在pyqt
中点击pyinstaller
:
稍等片刻,打包完成,打开
disk
中的可执行文件,运行成功!!!
大家已经完成整个软件制作的流程了,不知道有木有特别有成就感!!