创建窗口

先在python安装环境目录下安装pyqt5

1
pip install pyqt5

需要在安装python包的目录下找到Qt Designer工具主界面

路径为:{python安装目录}/Lib/site-packages/pyqt5_tools/designer.exe;

{ % hideInline “这个软件可以搞个快捷方式在桌面,相比QT比较轻量,简单的一些设计用它就可以了”, 一些碎碎叨 % }

主页面如下:

img

Qt Designer基本控件介绍

  1. 显示控件。

    Lable:文本标签,显示文本,可以用来标记控件

    Text Browser:显示文本控件。用于后台命令执行结果显示

  2. 输入控件,提供与用户输入交互

    Line Edit:单行文本框,输入单行字符串。控件对象常用函数为Text() 返回文本框内容,用于获取输入。setText() 用于设置文本框显示

    Text Edit:多行文本框,输入多行字符串。控件 对象常用函数同Line Edit控件

    Combo Box:下拉框列表。用于输入指定枚举值

  3. 控件按钮,供用户选择与执行

    Push Button:命令按钮。常见的确认、取消、关闭等按钮就是这个控件。clicked信号一定要记住,clicked信号就是指鼠标左键按下然后释放时会发送信号,从而触发相应操作。一般要关联connect调用函数

    Radio Button:单选框按钮

    Check Box:多选框按钮

根据需要拖拽控件,注意添加完成后在属性编译器中修改objectname,便于之后python的类操作

本文窗口如下

image-20220528215624688

将.ui文件转换为.py文件

在终端控制台中输入命令,调用格式为:pyuic5 -o {输出文件名} {输入designer设计好的.ui后缀界面文件}

1
pyuic5 -o ui.py ui.ui

界面与功能分离实现

为了后续修改方便,采用界面与功能相分离来实现,也就是通过创建主程序调用界面文件方式实现。

基本固定框架:(初始化)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#导入程序运行必须模块
import sys
#PyQt5中使用的基本控件都在PyQt5.QtWidgets模块中
from PyQt5.QtWidgets import QApplication, QMainWindow
#导入designer工具生成的模块
from ui import Ui_Form

class MyMainForm(QMainWindow, Ui_Form):
def __init__(self, parent=None):
super(MyMainForm, self).__init__(parent)
self.setupUi(self)

if __name__ == "__main__":
#固定的,PyQt5程序都需要QApplication对象。sys.argv是命令行参数列表,确保程序可以双击运行
app = QApplication(sys.argv)
#初始化
myWin = MyMainForm()
#将窗口控件显示在屏幕上
myWin.show()
#程序运行,sys.exit方法确保程序完整退出。
sys.exit(app.exec_())

添加功能

就是创建点击后的连接函数,详见代码

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
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2022/5/27 16:56
# @Author : YH
import sys
#PyQt5中使用的基本控件都在PyQt5.QtWidgets模块中
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QIcon
#导入designer工具生成的login模块
import string
from ui import Ui_Form

class MyMainForm(QMainWindow, Ui_Form):
def __init__(self, parent=None):
super(MyMainForm, self).__init__(parent)
self.setupUi(self)
self.setWindowTitle("像距像高计算器")
# 修改favion图片,需要添加from PyQt5.QtGui import QIcon,最好用绝对路径避免生成exe文件报错
self.setWindowIcon(QIcon(r'D:\pythonproject\ui\favicon.png'))
# 添加计算按钮信号和槽。注意display函数不加小括号()
self.cal.clicked.connect(self.display)
# 添加退出按钮信号,调用close函数
self.cancel.clicked.connect(self.close)
#添加重置信号
self.res.clicked.connect(self.clean)

def display(self):
# 利用line Edit控件对象text()函数获取界面输入
l1 = self.l1.text()
h1 = self.h1.text()
# 数据处理
if(l1.isdecimal() and h1.isdecimal()):
h2 = h1
l2 = l1
# 利用text Browser控件对象setText()函数设置界面显示
self.sign.setText("输入物距像距成功!")
self.h2.setText(h2)
self.l2.setText(l2)
else:
self.sign.setText("输入数据有误,请重新输入!")

在Qt Designer上修改主界面最大属性中的长宽设置成与最小属性一致可避免窗口被拉伸后奇奇怪怪

image-20220528220218000

Pyinstaller打包成.exe文件

最搞人的东西来了,可以使用pyinstaller工具将程序打包成.exe文件

首先要安装第三方库pyinstaller

1
pip install pyinstaller

最普遍的情况,在控制台中输入:(test为python文件名)

1
pyinstaller -F -w test.py 

如果引入模块了,需要修改:

1
pyinstaller [主文件] -p [其他文件1] -p [其他文件2] 

更换exe程序图标

需要准备后缀为.ico的图片,执行命令:pyinstaller -F -i [图片名].ico [文件名].py。(-i表示更换图标)

1
pyinstaller -F -i favicon.ico test.py -p ui.py -w  

在根目录下你会发现出现一个dist的文件夹,exe文件就在其中啦