Qt 提供了两种方法来构建用户界面:
Qt Widgets:一种命令式编程和设计方法,自 Qt 诞生以来,如今已经成为一项稳定可靠的技术用于创建 GUI 程序。
Qt Quick:一种声明式编程和设计方法,使你能够通过用简单的元素来描述它们来创建GUI。
本教程仅考虑 Qt Widgets 构建方法。
一:第一个 GUI
创建一个新文件 hello_world.py,复制下方代码到 IDE:
import sys
from PyQt6.QtWidgets import QApplication, QWidget
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Hello World")
window.show()
sys.exit(app.exec())
运行后,你将看到一个标题为 Hello World 的窗口:
二:理解
下面我们来逐行理解一下这 7 行代码背后的含义:
1:导入模块
import sys
from PyQt6.QtWidgets import QApplication, QWidget
在这两行代码中,我们导入了 Python 的 sys 模块以及从 PyQt 6 的 QtWidgets 模块中导入两个核心类:QApplication 与 QWidget
- QApplication:管理整个应用程序的生命周期,处理事件循环、设置和资源管理。
- QWidget:所有用户界面组件(窗口、按钮、文本框等)的基类,用于创建顶层窗口或嵌入组件。
2:实例化
app = QApplication(sys.argv)
在这一行代码中,我们创建了一个对象 app,参数 sys.argv 用于接收命令行参数(即使没有参数,也需要传递空列表以确保 PyQt 正常初始化)。此对象作为 PyQt 应用程序的入口,负责管理应用的全局设置(如字体、样式)和事件循环。
3:创建主窗口
window = QWidget()
在这一行代码中,我们创建了一个空的顶层窗口对象 window。由于 QWidget 是基类,未指定父组件时,它会作为独立窗口存在(带有边框、标题栏等)。后续我们可以通过设置属性或添加子组件来丰富窗口功能。
4:设置窗口标题
window.setWindowTitle("Hello World")
在这一行代码中,我们调用了 QWidget 下的方法,设置窗口标题栏显示的文本为 “Hello World”。这是一个通用方法,所有继承自 QWidget 的组件(如按钮、对话框)都可用于设置自身标题。
5:显示窗口
window.show()
在这一行代码中,我们使用 show 方法告诉窗口将自己显示在屏幕上。在 PyQt 6 中,创建窗口后需显式调用 show() 方法,否则窗口会隐藏。此时窗口会被渲染,但尚未进入事件处理阶段(由下一步的事件循环处理)。
6:启动事件循环并退出程序
sys.exit(app.exec())
在这一行代码中,我们启动了应用程序的事件循环:
- 程序在此处进入阻塞状态,等待用户操作(如点击窗口、键盘输入等)。
- 事件循环会处理所有界面更新、用户交互和系统事件,直到窗口被关闭。
- 返回值是窗口关闭时的状态码(通常为
0
表示正常退出)。sys.exit(...) 是 PyQt 6 中的标准退出方式,确保资源被正确释放。
三:最后
这段代码是 PyQt5 应用程序的最小骨架,之后我们所有的 GUI 程序都基于类似的结构扩展,通过添加按钮、布局、信号槽等实现复杂功能,这没有想象中的那么难。