【PyQt5】{10} —— 信號與信號連接

# -*- 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章