搭建基础窗口框架
开发桌面应用的第一步是理解事件循环与组件生命周期。很多初学者直接调用 window.show() 却发现窗口不显示,往往是因为忽略了 QApplication 的初始化或事件循环的启动。
程序启动流程通常遵循以下顺序:
- 创建应用对象(
QApplication) - 创建主窗口(
QMainWindow) - 设置窗口属性(标题、大小)
- 显示窗口
- 进入事件循环(
app.exec())
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())
注意:如果省略 sys.exit(app.exec()),程序会立即结束,导致窗口一闪而过。这是因为没有事件循环来维持程序的运行状态。
集成文本编辑器
记事本的核心是文本输入区域。虽然 QLineEdit 支持单行输入,但记事本需要多行编辑能力,因此应选用 QTextEdit。
将编辑器设置为窗口的中央部件后,它会自动占据剩余空间,而顶部和底部可预留菜单和状态栏。
from PyQt6.QtWidgets import QTextEdit
editor = QTextEdit()
window.setCentralWidget(editor)
这里使用 setCentralWidget 而非 setWidget,因为 QMainWindow 规范中只有前者用于定义主内容区。
设计菜单栏结构
菜单由菜单栏(QMenuBar)、主菜单项(如'文件')和操作项(如'打开')组成。PyQt 中使用 QAction 作为统一的事件处理单元,它可以绑定到菜单、按钮或工具栏。
menubar = window.menuBar()
file_menu = menubar.addMenu("文件")
open_action = file_menu.addAction("打开文件")
save_action = file_menu.addAction("保存文件")
save_action.setShortcut("Ctrl+S")
原理说明:addAction 返回一个 QAction 对象,通过 .triggered.connect() 可以绑定具体的回调函数。快捷键设置能显著提升用户体验。

