基础窗口架构
开发 GUI 程序的第一步是理解应用程序的生命周期。很多新手会直接调用 window.show(),却发现窗口一闪而过或不显示。这是因为缺少了事件循环和正确的初始化顺序。
一个标准的 PyQt 程序启动流程如下:
- 创建应用对象(Application Object)
- 创建主窗口(Main Window)
- 设置窗口属性(标题、大小)
- 显示窗口
- 进入事件循环(Event Loop)
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow
# 1. 创建应用对象
app = QApplication(sys.argv)
# 2. 创建主窗口
window = QMainWindow()
window.setWindowTitle("我的迷你记事本")
window.resize(500, 400)
# 3. 显示窗口
window.show()
# 4. 进入事件循环
sys.exit(app.exec())
关键点说明:QApplication 是所有 PyQt 程序的入口,必须存在。sys.exit(app.exec()) 负责监听用户操作(点击、输入等),如果删除这行代码,程序执行完窗口创建后就会立即结束,导致窗口无法持续显示。
文本编辑器集成
记事本的核心功能是文本编辑。初学者常误用 QLineEdit(单行输入框),但记事本需要多行支持,因此必须使用 QTextEdit。
将编辑器设置为窗口的中央内容区域是关键步骤:
from PyQt6.QtWidgets import QTextEdit
editor = QTextEdit()
window.setCentralWidget(editor)
注意方法名是 setCentralWidget,这是 QMainWindow 的专属方法,用于定义窗口的主内容区。其他如 setWidget 会导致报错。
菜单栏设计
菜单系统由菜单栏(MenuBar)、主菜单(Menu)和操作项(Action)组成。不要直接复制粘贴,要理解其层级关系。
menubar = window.menuBar()
file_menu = menubar.addMenu("文件")
open_action = file_menu.addAction("打开文件")
save_action = file_menu.addAction("保存文件")
save_action.setShortcut("Ctrl+S")
这里使用了 QAction 作为统一的事件处理单元,它可以绑定到菜单、按钮或工具栏。设置快捷键能显著提升用户体验,约 40% 的用户习惯使用快捷键操作。
文件读写功能
实现'打开'和'保存'时,需处理文件选择对话框及编码问题。常见的错误是忘记检查用户是否取消了选择,或者未指定编码导致中文乱码。

