【Py Qt】Pyside2 中界面动作处理 (signal 和 slot)

本文介绍了PySide2中如何处理界面动作,通过信号(signal)和槽(slot)机制实现按钮点击响应。通过示例代码展示了如何定义handleCalc函数并将其与按钮的clicked信号连接,使得点击按钮时弹出消息框。了解这一机制对于构建Qt应用至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pyside2 中界面动作处理 (signal 和 slot)

一个引导的栗子

下面是一个简单的代码,我们创建了一个主窗口,然后创建了一个按钮在中间,但是此时我们点击它并没有任何反应。

在这里插入图片描述

from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton

app = QApplication([])

window = QMainWindow()
window.resize(800, 480)
window.move(300, 300)
window.setWindowTitle('demo')

button = QPushButton('迪迦变身器', window)
button.move(350,210) 

window.show() 

app.exec_()

在这里插入图片描述

实际上,当我们按下按钮后,QApplication 是能感受到滴,并会分配给按钮控件来处理

但是这里我们的按钮控件我们并没有给它设置相应的处理方法,所以我们没有看到任何的反应。

严谨的分析

  • 创建app 这个QT应用程序对象, QApplication 在QT中起到整个图形界面程序 底层管理的功能比如初始化、程序入口参数的处理,用户事件(对界面的点击、输入、拖拽)分发给各个对应的控件等等,所以当我们按下按钮后,QApplication 是能感受到滴,并会分配给按钮控件来处理。

  • app.exec_() 的作用就是 进入QT应用程序对象里面的事件处理循环中,是一个等待循环,此时如果你点击按钮,QApplication就会分配给按钮控件来处理。

  • 所以我们需要一个控件的响应

在 Qt 系统中, 当界面上一个控件被操作时,比如 被点击、被输入文本、被鼠标拖拽等, 就会发出 信号 ,英文叫 signal 。就是表明一个事件(比如被点击、被输入文本)发生了。

我们可以预先在代码中指定 处理这个 signal 的函数,这个处理 signal 的函数 叫做 slot

对信号的响应

在下面的代码中我们定义了一个 handleCalc()函数

通过 button.clicked.connect(handleCalc) 来使用它

用QT的术语来解释上面这行代码,就是:把 button 被 点击(clicked) 的信号(signal), 连接(connect)到了 handleCalc 这样的一个 slot上

大白话就是:让 handleCalc 来 处理 button 被 点击的操作。

from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QMessageBox


def handleCalc():
    QMessageBox.about(window,
                      '结果',
                      '你变成了一束光 !')

app = QApplication([])

window = QMainWindow()
window.resize(800, 480)
window.move(300, 300)
window.setWindowTitle('demo')

button = QPushButton('迪迦变身器', window)
button.move(350,210) 
button.clicked.connect(handleCalc)

window.show() 

app.exec_()

在这里插入图片描述

在这里插入图片描述

相关博客:

PySide2基础篇(十四)——QMessageBox运用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值