PyQt6 入门教程:从零开始构建第一个GUI程序

PyQt6 入门教程:从零开始构建第一个GUI程序

PyQt-Chinese-tutorial PyQt6中文教程 PyQt-Chinese-tutorial 项目地址: 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 程序的基本结构:

  1. QApplication:每个 PyQt6 程序都必须创建一个 QApplication 实例,它管理应用程序的主事件循环
  2. QWidget:作为所有用户界面对象的基类,这里我们用它创建了一个空白窗口
  3. 窗口属性设置:通过方法调用设置窗口的大小、位置和标题
  4. 事件循环: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())

实现原理:

  1. 获取窗口的框架矩形
  2. 计算屏幕可用区域的中心点
  3. 将窗口框架中心对齐屏幕中心
  4. 调整窗口位置

总结

通过这几个基础示例,我们已经掌握了 PyQt6 的以下核心概念:

  1. 应用程序对象(QApplication)的创建和管理
  2. 主窗口(QWidget)的基本操作
  3. 常用控件的使用(QPushButton)
  4. 工具提示的添加方法
  5. 信号与槽机制的基本应用
  6. 事件处理的基本方法
  7. 窗口位置和大小的控制

这些基础知识是构建更复杂 PyQt6 应用程序的基石。在实际开发中,我们通常会使用 Qt Designer 来设计界面,然后将其转换为 Python 代码,这可以大大提高开发效率。

PyQt-Chinese-tutorial PyQt6中文教程 PyQt-Chinese-tutorial 项目地址: https://gitcode.com/gh_mirrors/py/PyQt-Chinese-tutorial

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邬情然Harley

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值