PyQT6 GUI编程开发桌面软件
PyQt6 是基于 Python 的一系列模块。它是一个多平台的工具包,可以在包括Unix、Windows和Mac OS在内的大部分主要操作系统上运行。PyQt6 有两个许可证,开发人员可以在 GPL 和商业许可之间进行选择。
PyQt6 模块
PyQt6 类是由一系列模块组成的,包括如下的模块:
QtCore
QtGui
QtWidgets
QtDBus
QtNetwork
QtHelp
QtXml
QtSvg
QtSql
QtTest
PyQt6 中的事件
GUI 应用程序是事件驱动的。事件主要由应用程序的用户触发,但也可以通过其他方式生成,例如 Internet 连接、窗口管理器或定时器。当我们调用应用程序的 exec() 方法时,应用程序进入主循环。主循环获取事件并将它们发送到对象。
在事件模型里,事件源对象将处理事件的任务委托给事件目标。有三个要素:
事件源 event source 事件源是状态改变的对象,它会产生事件。
事件对象 event object 封装了事件源中的状态变化。
事件目标 event target 要被通知的对象。
PyQT 中有三个类可以用于创建窗口组件 :
QMainWindow :可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,也可以说是GUI程序的主窗口
QDialog : 对话框窗口的基类 , 用于生成交互的对话框
QWidget : 基本窗口部件类 , 也是QMainWindow的基类
PySide 6/PyQt 6具有的特性
能跨平台运行在Windows、Linux和macOS等平台上。
对QT库进行完全封装,基于高性能的Qt的GUI控件集。
使用信号/槽机制进行通信。
提供了一整套种类繁多的窗口控件。
可以使用Qt成熟的IDE(如 Qt Designer)进行图形界面设计,并自动生成可执行的Python代码。
底层是Qt的dll文件,基于C++运行,所以运行效率上得到了一定的保证。
PySide6:PySide6是Qt的另一个Python绑定,与PyQt类似,但使用了更宽松的许可证(LGPL)。它提供了与PyQt相似的功能和API,因此如果熟悉PyQt的使用,可以很容易地切换到PySide6。与PyQt相比,PySide6的社区支持可能相对较少,但它仍然是一个可行的选择。
PySide 6/PyQt 6之间的区别
PySide 6/PyQt 6 都基于Qt6,他们之间的代码基本没有区别,其它方面有两个最重要的区别,掌握这两个区别可以帮助开发人员解决PySide 6/PyQt 6之间约95%的兼容性问题。
一是信号与槽的命名。
PySide 6/PyQt 6关于信号与槽的命名不同,使用下面的方法可以统一起来:
from PySide6.QtCore import Signal, Slot
from PyQt6.QtCore import pyqtSignal as Signal, pyqtSlot as Slot
二是关于枚举的问题。
PySide 6 为枚举的选项提供了快捷方式,比如Qt.DayOfWeek枚举星期一到星期日,在 PySide 6中星期三可以直接用快捷方式Qt.Wednesday表示,而PyQt 6 需要完整的使用Qt.DayOfWeek.Wednesday表示。解决这个问题最简单的方法是从Qt官方帮助文档中查询枚举的完整路径,另一个方法是使用qtpy模块,使用qtpy模块可以把PySide和PyQt统一起来,直接使用快捷方式。
通过以下方式:pip install qtpy
from qtpy.QtCore import Qt![QQ截图20241030154346.png](http://static.itsharecircle.com/241030/ac33797707429d3964e8a6916d7935d7.png)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码`
- 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传