环境

最好使用Python3.8以后的版本,并且更新pip版本。

PyQt5是第三方写的Qt的Python接口,诞生比较早,所以用的人多,文档丰富。PySide2是Qt官方为Python编写的接口库,2018年发布,虽然比较晚但毕竟是亲儿子,以后还是学它吧。

安装:

1
pip install pyside2

此过程会自动根据不同环境安装Qt Designer到python目录/site-packages/PySide2文件夹下。

Qt Designer

8c278386-6ad8-49e5-b49c-099e56b3d08d

保存设计好的ui文件,打开查看:

563a44d5-7634-4746-aa9f-f88d66960627

其实就是一个xml标记文件,保存了对象和布局信息。

HelloWord

将Designer生成的ui文件放入项目里的ui文件夹下。写一个Demo程序:

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
# coding : utf-8

from PySide2.QtCore import QFile
from PySide2.QtUiTools import QUiLoader
from PySide2.QtWidgets import QApplication, QMessageBox


class MainWindow:
def __init__(self):
# 打开并读取当前文件夹下的ui文件夹下的main.ui设计文件
qfile = QFile("ui/main.ui")
qfile.open(QFile.ReadOnly)
qfile.close()

# 使用QUiLoader加载器实例中的load方法加载ui文件,返回其窗口的对象
self.ui = QUiLoader().load(qfile)
# 设置窗口对象中的edit_button(也就是设计时在窗口中的实例名称)成员连接到
# button_handler槽(slot,可以理解为控件的事件是水管,事件产生时就会调用连接的槽)
self.ui.edit_button.clicked.connect(self.button_handler)
# 使窗口可见
self.ui.show()

def button_handler(self):
print("Button pressed")
# 弹出一个提示框(父组件,标题,内容)
QMessageBox().about(self.ui, "Button Pressed", "输入文本:" + (self.ui.text_edit.toPlainText() if self.ui.text_edit.toPlainText() else "空"))


# 实例化QT的应用,可以认为它要处理很多东西
app = QApplication([])
# 实例化主窗口类,东西都封装好了,会自动初始化
w = MainWindow()
# 阻塞地等待监听
app.exec_()

点击按钮后效果如图所示:

8185b6fd-012f-41eb-843f-c53071ca537a

⬆︎TOP