跳过正文
  1. 文章/
  2. Python/
  3. GUI/
  4. PySide6/

1、PySide6

·1843 字·4 分钟· loading · loading · ·
Python GUI PySide6
GradyYoung
作者
GradyYoung
PySide6 - 点击查看当前系列文章
§ 1、PySide6 「 当前文章 」

Python 的图形化界面
#

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

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

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

  • Tkinter

    • 基于Tk的Python库,这是Python官方采用的标准库,优点是作为Python标准库、稳定、发布程序较小。
    • 缺点是控件相对较少。
  • wxPython

    • 基于wxWidgets的Python库,优点是控件比较丰富。
    • 缺点是稳定性相对差点、文档少、用户少。
  • PySide2/PySide6、PyQt5/PyQt6

    • 基于Qt 的Python库,优点是控件比较丰富、跨平台体验好、文档完善、用户多。
    • 缺点是库比较大,发布出来的程序比较大。

如果要开发小工具,界面比较简单,可以采用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 就行了。反之亦然。

许可证方面也有区别:

  • PyQt‌:采用GPL(GNU通用公共许可证)或商业许可证。如果你使用PyQt开发商业应用但不想开源,需要付费购买商业授权。对于开源项目,GPL是免费的,但要求你的项目也必须是开源的‌。
  • PySide‌:使用LGPL(宽松通用公共许可证)。这允许在闭源项目中免费使用PySide6,只需遵守LGPL的要求,如动态链接等‌。

安装
#

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
#

  • Program:和上面 VsCode 配置的 designer 路径一样
  • Arguments:固定为$FilePath$
  • Working directory:固定为$ProjectFileDir$

image-20250422152134308

rcc
#

  • Program:和上面 VsCode 配置的 rcc 路径一样
  • Arguments:固定为$FilePath$ -o $FileDir$/$FileNameWithoutExtension$_rc.py
  • Working directory:固定为$ProjectFileDir$

image-20250422151124031

uic
#

  • Program:和上面 VsCode 配置的 uic 路径一样
  • Arguments:固定为$FilePath$ -o $FileDir$/$FileNameWithoutExtension$_ui.py
  • Working directory:固定为$ProjectFileDir$

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()
PySide6 - 点击查看当前系列文章
§ 1、PySide6 「 当前文章 」