1、PySide6

Python 的图形化界面

程序的用户交互界面,英文称之为 UI (user interface)

当一个应用的 UI 比较复杂的时候,命令行方式就不便用户使用了,这时我们需要图形界面。

如果用 Python 语言开发 跨平台 的图形界面的程序,主要有3种选择:

如果要开发小工具,界面比较简单,可以采用Tkinter。

如果是发布功能比较多的正式产品,采用基于Qt的 PySide2/PySide6、PyQt5/PyQt6。

PySide 和 PyQt 区别

PySide2/PySide6、PyQt5/PyQt6 都是基于著名的 Qt 库。

Qt库里面有非常强大的图形界面开发库,但是Qt库是C++语言开发的,PySide2、PyQt5可以让我们通过Python语言使用Qt。

但是 PySide、PyQt 这两者有什么区别呢?

可以形象地这样说: PySide 是Qt的 亲儿子 , PyQt 是Qt还没有亲儿子之前的收的 义子 (Riverbank Computing这个公司开发的)。

两个库的使用对程序员来说,差别很小:它们的调用接口几乎一模一样。

如果你的程序是PyQt5开发的,往往只要略作修改,比如把导入的名字从 PyQt5 换成 PySide2 就行了。反之亦然。

许可证方面也有区别:

安装

PySide6 / PySide2

pip install pyside2
pip install pyside6

安装 PySide2, 要求 Python版本 <= 3.10

安装 Pyside6, 要求 Python版本 >= 3.10

PyQt6 / PyQt5

pip install pyqt5-tools
pip install pyqt6-tools

开发环境配置

安装完上面的依赖后,我们需要在 IDE 中进行配置

首先我们安装完 pyside6 后,可以使用pip show pyside6查看安装路径

image-20250422145345638

VsCode

安装 Qt for python 插件,安装完成后,打开插件的设置

image-20250421093449265

配置如下的三项

rcc

image-20250421093629098

pyside6-rcc作用是转换资源文件.qrc.py,第一次接触可以先忽视。

路径在python 环境的 bin 目录下

uic

image-20250421093645260

pyside6-uic作用是将QT designer设计出来的.ui文件,转换为.py文件。

路径和上面的 rcc 在同级目录中。

designer

image-20250421093738957

QT designer是图形化界面设计UI的。

执行pip show pyside6,进入Location/PySide6,里面有个Designer.exe(Windows)Designer.app(Mac)

Windows 直接配置这个Designer.exe的路径就可以。

Mac 需要配置Designer.app/Contents/MacOS/Designer的路径。

PyCharm

Settings - Tools - External Tools中分别添加三个工具

designer

image-20250422152134308

rcc

image-20250422151124031

uic

image-20250422151407488

自动 uic

有的时候我们希望当我们编辑.ui文件的时候,自动实时生成.py文件,那么就可以利用 PyCharm 的File Watchers功能

打开Settings - Tools - File Watchers中,新增一个QT Ui File Auto Conver的 Watcher即可。

image-20250422153435894

HelloWorld

from PySide6.QtWidgets import QApplication,QMainWindow,QLabel

application = QApplication([])

main_window = QMainWindow()
main_window.resize(500,400)
main_window.move(300,300)

label = QLabel(parent=main_window,text='Hello World!')
label.move(10,10)

main_window.show()
application.exec()

image-20250421100410504

QApplication 提供了整个图形界面程序的底层管理功能,比如:

初始化、程序入口参数的处理,用户事件(对界面的点击、输入、拖拽)分发给各个对应的控件,等等。

既然QApplication要做如此重要的初始化操作,所以,我们必须在任何界面控件对象创建前,先创建它。

对于上面的代码,我们可以按照规范编码的形式进行编写,即每一个自定义窗口为一个类

from PySide6.QtWidgets import QApplication, QMainWindow, QLabel


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.lable = QLabel(parent=self, text='Hello World!')
        self.lable.move(10, 10)


application = QApplication([])
main_window = MainWindow()
main_window.resize(500,400)
main_window.move(300,300)
main_window.show()
application.exec()