PyQt 6 教程 第四章:信号与槽(Signals & Slots)

一:事件(event)

        与控制台程序不同,基于 GUI 的应用程序是由事件驱动的。函数或方法响应用户的操作而执行,用户的每一次操作(如按钮被点击、最小化窗口)都称之为事件

二:信号

        对象状态的变化或事件发生时发出的通知。每个派生自 QObject 类的 PyQt 6 组件能够发出信号响应一个或多个事件,信号本身并不执行任何操作,但它可以连接到槽。

三:连接(connect)

        将信号和槽关联起来,使得信号发出时自动调用对应的槽执行操作。

四:槽

        信号发出时调用的函数,用于处理接收到的信号。

五:使用

        我们对上一章的代码进行以下修改:

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Hello World")
window.resize(600, 600)
button = QPushButton(text="How's it going?", parent=window)
button.move(200, 200)
button.resize(200, 50)
button.show()
window.show()
sys.exit(app.exec())

        运行上方代码,将会显示一个带有按钮的窗口:

        但是,我们点击按钮毫无反应,这不是我们的预期效果。这时,就要用到信号与槽来让骨架与神经连接起来了。 

        从 Designer 中不难看出,对于 pushButton,继承了 QAbstractButton 类 ,其中有负责被点击后的信号:clicked()。

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton

def answer():
    print("Everything goes well.")

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Hello World")
window.resize(600, 600)
button = QPushButton(text="How's it going?", parent=window)
button.move(200, 200)
button.resize(200, 50)
button.clicked.connect(answer)
button.show()
window.show()
sys.exit(app.exec())

        这时再运行,点击按钮控制台会输出 “Everything goes well.”。恭喜你,完成了一次信号与槽的连接。

六:最后

        你已经完成了 PyQt 6 的初步学习,以后的所有组件都会以此为基础实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ParrotStudio

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

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

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

打赏作者

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

抵扣说明:

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

余额充值