信号与信号连接
# -*- coding: utf-8 -*-
"""
Created on Sat May 9 11:39:49 2020
@author: Giyn
"""
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QVBoxLayout
class Simple_Window(QWidget):
def __init__(self):
super(Simple_Window, self).__init__() # 使用super函数可以实现子类使用父类的方法
self.label = QLabel("I am a Label", self) # self是指定的父类Simple_Window,表示QLabel属于Simple_Window窗口
self.button = QPushButton("Button", self)
self.button.pressed.connect(self.button.released) # 连接信号与信号
self.button.released.connect(self.change_label)
self.v_layout = QVBoxLayout() # 实例化一个QVBoxLayout对象
self.v_layout.addWidget(self.label)
self.v_layout.addWidget(self.button)
self.setLayout(self.v_layout) # 调用窗口的setLayout方法将总布局设置为窗口的整体布局
def change_label(self):
self.label.setText("I am changed")
print("flag")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Simple_Window()
window.show()
sys.exit(app.exec())
Output:
When push (not released):
>>> flag
When released:
>>> flag
>>> flag
当按下按钮且未释放的时候,发射了 pressed
信号,同时发射了 released
信号,然后调用槽函数;释放按钮, released
信号再次发射,再次调用槽函数。
第一次调用槽函数是间接调用;第二次调用槽函数是直接调用。
Reference:https://study.163.com/course/courseLearn.htm?courseId=1208995818