PyQt6 入门教程:从零开始构建第一个GUI程序
PyQt-Chinese-tutorial PyQt6中文教程 项目地址: https://gitcode.com/gh_mirrors/py/PyQt-Chinese-tutorial
作为 Python 最流行的 GUI 框架之一,PyQt6 为开发者提供了创建跨平台桌面应用程序的强大工具。本文将通过几个基础示例,带你快速上手 PyQt6 开发。
最简单的 PyQt6 窗口程序
让我们从一个最基本的窗口程序开始,了解 PyQt6 的核心组件和工作原理:
import sys
from PyQt6.QtWidgets import QApplication, QWidget
def main():
app = QApplication(sys.argv) # 创建应用对象
window = QWidget() # 创建主窗口
window.resize(250, 200) # 设置窗口大小
window.move(300, 300) # 设置窗口位置
window.setWindowTitle('我的第一个PyQt6程序') # 设置窗口标题
window.show() # 显示窗口
sys.exit(app.exec()) # 进入主事件循环
if __name__ == '__main__':
main()
这段代码虽然简短,但包含了 PyQt6 程序的基本结构:
- QApplication:每个 PyQt6 程序都必须创建一个 QApplication 实例,它管理应用程序的主事件循环
- QWidget:作为所有用户界面对象的基类,这里我们用它创建了一个空白窗口
- 窗口属性设置:通过方法调用设置窗口的大小、位置和标题
- 事件循环:app.exec() 启动主事件循环,使程序保持运行状态
为界面元素添加提示信息
在实际应用中,我们经常需要为用户提供操作提示。PyQt6 通过工具提示(Tooltip)功能可以轻松实现这一点:
from PyQt6.QtWidgets import QToolTip, QPushButton
from PyQt6.QtGui import QFont
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 设置工具提示的字体
QToolTip.setFont(QFont('Microsoft YaHei', 10))
# 为窗口添加提示
self.setToolTip('这是一个<b>主窗口</b>')
# 创建按钮并添加提示
btn = QPushButton('点击我', self)
btn.setToolTip('这是一个<b>按钮</b>控件')
btn.resize(btn.sizeHint()) # 使用推荐大小
btn.move(50, 50) # 设置按钮位置
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('工具提示示例')
self.show()
关键点说明:
- 使用
QToolTip.setFont()
可以自定义提示信息的字体 - 富文本格式(如
<b>加粗</b>
)在提示信息中是被支持的 sizeHint()
方法返回控件的推荐大小- 通过
move()
方法可以精确控制控件在窗口中的位置
实现退出功能
一个完整的应用需要提供退出机制。PyQt6 通过信号与槽机制实现这一功能:
from PyQt6.QtWidgets import QPushButton
class Example(QWidget):
def initUI(self):
quit_btn = QPushButton('退出', self)
# 连接按钮点击信号到退出槽
quit_btn.clicked.connect(QApplication.instance().quit)
quit_btn.resize(quit_btn.sizeHint())
quit_btn.move(50, 50)
这里使用了 PyQt6 的核心机制 - 信号与槽:
- 当按钮被点击时,会发出
clicked
信号 - 我们将这个信号连接到
QApplication.instance().quit
槽 - 这种松耦合的设计是 Qt 框架的一大特色
添加关闭确认对话框
为了防止用户误操作,我们可以在关闭窗口时添加确认提示:
from PyQt6.QtWidgets import QMessageBox
class Example(QWidget):
def closeEvent(self, event):
reply = QMessageBox.question(
self, '确认',
"确定要退出程序吗?",
QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No,
QMessageBox.StandardButton.No)
if reply == QMessageBox.StandardButton.Yes:
event.accept() # 接受关闭事件
else:
event.ignore() # 忽略关闭事件
注意事项:
closeEvent
是 QWidget 的一个事件处理方法QMessageBox
提供了多种标准对话框- 必须明确调用
accept()
或ignore()
来处理事件
窗口居中显示
专业的应用程序通常会将自己居中显示在屏幕上:
class Example(QWidget):
def center(self):
# 获取窗口的框架几何信息
qr = self.frameGeometry()
# 获取屏幕中心点
cp = self.screen().availableGeometry().center()
# 将窗口框架中心移动到屏幕中心
qr.moveCenter(cp)
# 将窗口左上角移动到框架左上角
self.move(qr.topLeft())
实现原理:
- 获取窗口的框架矩形
- 计算屏幕可用区域的中心点
- 将窗口框架中心对齐屏幕中心
- 调整窗口位置
总结
通过这几个基础示例,我们已经掌握了 PyQt6 的以下核心概念:
- 应用程序对象(QApplication)的创建和管理
- 主窗口(QWidget)的基本操作
- 常用控件的使用(QPushButton)
- 工具提示的添加方法
- 信号与槽机制的基本应用
- 事件处理的基本方法
- 窗口位置和大小的控制
这些基础知识是构建更复杂 PyQt6 应用程序的基石。在实际开发中,我们通常会使用 Qt Designer 来设计界面,然后将其转换为 Python 代码,这可以大大提高开发效率。
PyQt-Chinese-tutorial PyQt6中文教程 项目地址: https://gitcode.com/gh_mirrors/py/PyQt-Chinese-tutorial
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考