测试工具开发 - pyside2

一、PySide2 、 PyQt5 简介

PySide2、PyQt5 都是基于著名的 Qt 库。
Qt库里面有非常强大的图形界面开发库,但是Qt库是C++语言开发的,PySide2、PyQt5可以让我们通过Python语言使用Qt。
PySide2 是Qt的 亲儿子 , PyQt5 是Qt还没有亲儿子之前的收的 义子 (Riverbank Computing这个公司开发的)。
那为什么 PyQt5 这个义子 反而比 PySide2 这个亲儿子更出名呢?
原因很简单:PySide2 这亲儿子最近(2018年7月)才出生。

二、 PySide2 安装

1
pip install pyside2

网络比较慢,可以指定国内的安装源,下载安装。

1
pip install pyside2 -i https://pypi.douban.com/simple/

::: warning
Qt 官方网站声明了: Windows上 Python 3.8.0 调用 Qt 5.14 , 会有问题。
有类似下面这样的导入错误

1
ImportError: Dll load failed while importing shiboken2: 找不到指定的程序

所以, 就是不能用 Python 3.8.0 ,请使用3.8.1或者以后的版本, Python 3.7 也可以。
:::

三、 Qt Designer

我们可以用QT界面生成器 Qt Designer ,拖拖拽拽就可以直观的创建出程序大体的界面。
Windows下,运行 Python安装目录下 Scripts\pyside2-designer.exe 这个可执行文件
通过 Qt Designer 设计的界面,最终是保存在一个ui文件中的。

1.Pycharm 快速打开 Designer

程序:D:\python\Lib\site-packages\PySide2\designer.exe
工作目录:

文件夹 右键 点击可以快速打开 Designer , 编辑保存后再该目录可以生成一个 .ui 的文件。

四、UI文件加载

1.动态加载

我们的Python程序就可以从文件中加载UI定义,并且动态 创建一个相应的窗口对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 1.应用对象
from PySide2.QtWidgets import QApplication
# 2.界面UI 文件需要导入代码里
from PySide2.QtUiTools import QUiLoader
# 3.导入读取UI文件的库
from PySide2.QtCore import QFile

# 4.创建一个应用对象
app = QApplication([])
# 5.获取 UI 文件
qFile = QFile("登录系统.ui")
# 6.打开 UI 文件
qFile.open(QFile.ReadOnly)
# 7.加载 UI 对象
ui = QUiLoader().load(qFile)
# 8.关闭 UI 文件
qFile.close()

# 9.显示 UI
ui.show()
# 10.运行对象
app.exec_()

2.转化UI文件为Python代码

执行如下的命令 把UI文件直接转化为包含界面定义的Python代码文件

1
pyside2-uic main.ui > ui_main.py

然后在你的代码文件中这样使用定义界面的类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from PySide2.QtWidgets import QApplication,QMainWindow
from ui_main import Ui_MainWindow

class MainWindow(QMainWindow):

def __init__(self):
super().__init__()
# 使用ui文件导入定义界面类
self.ui = Ui_MainWindow()
# 初始化界面
self.ui.setupUi(self)

# 使用界面定义的控件,也是从ui里面访问
self.ui.webview.load('http://www.baidu.com')

app = QApplication([])
mainw = MainWindow()
mainw.show()
app.exec_()