PyQt5 给窗口添加按钮与点击交互

一、核心代码与深度解析

步骤 1:导入模块

首先导入所需模块,相比基础窗口,新增了QPushButton(按钮)和QMessageBox(提示框):

import sys
# 导入基础窗口组件+新增的按钮、提示框组件
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox
  • QPushButton:PyQt5 中标准的可点击按钮组件,支持设置文字、位置、尺寸,且能触发 “点击” 等事件。
  • QMessageBox:系统级提示框组件,支持弹出 “信息提示”“警告”“错误”“确认” 等多种类型的对话框,无需手动设计窗口,直接调用API 即可使用。

步骤 2:定义按钮点击的处理函数

当按钮被点击时,需要执行 “弹出提示框” 的逻辑,因此我们先定义一个处理函数 —— 这个函数在 PyQt5 中被称为 “槽函数(Slot)”,用于响应 “信号(Signal)”:

# 定义按钮点击时的处理函数(槽函数)
def on_button_click():
    # 弹出信息提示框:QMessageBox.information(父窗口, 提示框标题, 提示内容)
    QMessageBox.information(window, "提示", "按钮被点击啦!")

QMessageBox.information()参数解析:
第一个参数(window):指定提示框的 “父窗口”,即提示框会依附于window窗口,关闭父窗口时提示框也会关闭(若设为None,提示框会居中显示在屏幕上,不依附任何窗口)。
第二个参数(“提示”):提示框标题栏的文字。
第三个参数(“按钮被点击啦!”):提示框内部显示的核心内容。

步骤 3:创建应用与基础窗口

这部分逻辑与上一篇的基础窗口一致,主要是初始化应用和窗口,为后续添加按钮做准备:

# 1. 创建应用程序对象(必须有且只有一个)
app = QApplication(sys.argv)

# 2. 创建窗口对象并配置
window = QWidget()
window.setWindowTitle("带按钮的窗口")  # 窗口标题
window.resize(400, 300)              # 窗口大小(宽400,高300)

步骤 4:创建按钮并设置位置

通过QPushButton创建按钮组件,并设置按钮的文字和在窗口中的位置:

# 3. 创建按钮:QPushButton(按钮文字, 父容器)
button = QPushButton("点击我", window)
# 设置按钮在窗口中的位置:move(x坐标, y坐标)
button.move(150, 130)

QPushButton初始化参数:
第一个参数(“点击我”):按钮上显示的文字。
第二个参数(window):指定按钮的 “父容器”,即按钮会显示在window窗口内(若不指定父容器,按钮会成为一个独立的小窗口,这通常不是我们想要的)。
move(x, y)坐标规则:
坐标原点(0, 0)在窗口的左上角。
x值越大,按钮越靠右;y值越大,按钮越靠下。
此处设置(150, 130)是因为窗口宽 400、高 300,这个坐标能让按钮大致居中(可根据需求调整数值)。

步骤 5:绑定按钮点击事件

这是实现交互的核心步骤:将 “按钮被点击” 这个 “信号(Signal)”,与我们之前定义的 “弹出提示框” 的 “槽函数(Slot)” 通过connect()方法连接起来 —— 当信号触发时,槽函数会自动执行。

# 4. 绑定信号与槽:按钮的clicked信号 → 触发on_button_click槽函数
button.clicked.connect(on_button_click)

什么是 “信号与槽”?
这是 PyQt5(以及 Qt 框架)特有的交互机制,可以通俗理解为:
信号(Signal):组件触发的 “事件”,比如按钮被点击(clicked)、窗口被关闭(closed)、文本框内容变化(textChanged)等。
槽(Slot):用于响应信号的 “处理函数”,比如on_button_click就是响应 “按钮点击” 的槽函数。
连接(connect):通过信号.connect(槽函数)的方式,将 “事件” 与 “处理逻辑” 绑定,实现 “触发事件→执行逻辑” 的自动化。
关键注意点:绑定信号时,槽函数只写函数名(不带括号),因为我们是 “指定函数”,而不是 “立即执行函数”;若写成on_button_click(),程序运行时会直接弹出提示框,而不是点击按钮时弹出。

步骤 6:显示窗口与启动事件循环

最后一步与基础窗口一致,显示窗口并让程序进入事件循环,等待用户操作:

# 5. 显示窗口(组件默认隐藏,需手动调用show())
window.show()

# 6. 启动事件循环,等待用户操作(关闭窗口时退出程序)
sys.exit(app.exec_())

二、完整代码

将上述步骤整合,完整代码如下(关键部分已添加注释):

import sys
# 导入基础组件+按钮、提示框组件
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox

# 槽函数:按钮点击时执行
def on_button_click():
    # 弹出信息提示框(父窗口为window,标题“提示”,内容“按钮被点击啦!”)
    QMessageBox.information(window, "提示", "按钮被点击啦!")

# 1. 初始化应用
app = QApplication(sys.argv)

# 2. 创建并配置窗口
window = QWidget()
window.setWindowTitle("带按钮的窗口")
window.resize(400, 300)

# 3. 创建按钮并设置位置
button = QPushButton("点击我", window)  # 按钮文字+父容器
button.move(150, 130)                  # 按钮在窗口中的坐标

# 4. 绑定信号与槽:点击按钮 → 执行on_button_click
button.clicked.connect(on_button_click)

# 5. 显示窗口+启动事件循环
window.show()
sys.exit(app.exec_())

三、运行效果

弹出一个 400x300 的窗口,标题为 “带按钮的窗口”;
窗口内(大致居中位置)有一个文字为 “点击我” 的按钮;
点击按钮后,弹出一个标题为 “提示” 的对话框,内容为 “按钮被点击啦!”;
点击提示框的 “确定” 按钮,对话框关闭;点击窗口右上角的 “关闭” 按钮,程序正常退出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值