pyqt Signal and Slot

本文介绍了PyQT中Signal和Slot的概念及其使用,通过一个实际的Push Me按钮点击事件来展示其工作原理。读者将了解到如何在PyQT界面中实现按钮点击后的交互逻辑。

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

特别说明,这些代码都是参考至一个视频教程。“Pyqt5 Lesson”

#仍然先整理一下思路
#这一次是用一个类来演示signal和slot如何联动
'''
既然用到类,那么和之前直接使用函数是不同的,该演示包括如下几部分内容
1. 类的定义,需要使用QtWidget.Qwidiget函数(1行),
2. 类之中必须有的__init__函数,需要传递一个self变量,应用一个super函数,并且调用一个init_ui函数(3行)
3. 定义init_ui函数,这个函数:
定义PushButton,定义了QLabel,(2行)
并且将Label放进QHBoxLayout中,(4行)
将Button和HLayout放进QVBoxLayout中,(3行)
然后将VLayout放进window中并设置window的title,(2行)
并调用与button的connect的函数,(1行)
最后显示整个window。(1行)
4. 定义函数btn_click函数,用来制定button被按下时的操作。(2行)
5. 调用类,首先仍然是调用QtWidegets.QApplication得到app,然后调用类window,最后结束退出。(3行)
'''
import sys
from PyQt5 import QtWidgets
class window(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()
        #值得注意的是,在类里面调用函数,需要用self.xxx的形式,self就是类本身
    def init_ui(self):
        self.b=QtWidgets.QPushButton("Push Me")
        self.l=QtWidgets.QLabel('Look at Me')

        h_box=QtWidgets.QHBoxLayout()
        h_box.addStretch()
        h_box.addWidget(self.l)
        h_box.addStretch()

        v_box=QtWidgets.QVBoxLayout()
        v_box.addWidget(self.b)
        v_box.addLayout(h_box)

        self.setLayout(v_box)
        self.setWindowTitle("Signal and Slot")
        #本节的要点就是这里,利用self.b.clicked.connect将click button这个动作传递给了函数btn.click。而btn.click是在text中显示“Clicked”这一简单文字
        self.b.clicked.connect(self.btn_click)
        self.show()
    def btn_click(self):
        self.l.setText("Clicked")

app=QtWidgets.QApplication(sys.argv)
w_window=window()
sys.exit(app.exec_())

直接运行程序得到如下界面

点击Push Me之后得到如下界面


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值