1. 程式人生 > >Pyqt5:訊號與槽(一)

Pyqt5:訊號與槽(一)

訊號與槽是Qt特有的機制。
pyqt5的訊號與槽官方地址:訊號與槽
UI介面如下:
UI介面
思路:
按下對應按鍵顯示對應訊號文字。
主要說自定義訊號,qt控制元件自帶訊號就不說了。
訊號定義需要呼叫庫:

QObejcet,pyqtSignal
from PyQt5.QtCore import QObject, pyqtSignal

類內部訊號與槽:

Class_signal = pyqtSignal(str)

槽:

    def Class_signal_print(self,singnal_str):
        self.textBrowser.setText(singnal_str)

訊號傳送:

    def pushbutton_clicked(self):
        self.Class_signal.emit("類內部訊號")

訊號與槽連線:

self.Class_signal.connect(self.Class_signal_print)

類之間訊號呼叫:
類定義:

class m_signal(QObject):
    Class_signal_other = pyqtSignal(str)
    def signal_emit(self):
        self.Class_signal_other.emit("類之間訊號"
)

訊號定義:

Class_signal_other = pyqtSignal(str)

訊號傳送:

self.M_signal = m_signal()
def pushbutton_2_clicked(self):
    self.M_signal.signal_emit()
        def signal_emit(self):
        self.Class_signal_other.emit("類之間訊號")

槽函式:

    def Class_signal_other_print(self,singnal_str):
        self.textBrowser.setText(singnal_str)

訊號與槽連線:

self.M_signal.Class_signal_other.connect(self.Class_signal_other_print)

訊號的多型:
訊號的定義:

Class_signature = pyqtSignal([str],[int])

訊號的傳送:

    def Class_signature_1_print(self,singnal_str):
        self.textBrowser.setText(singnal_str+":"+str(type(singnal_str)))

    def pushButton_4_clicked(self):     
        self.Class_signature[int].emit(156277)

槽函式:

    def Class_signature_1_print(self,singnal_str):
        self.textBrowser.setText(singnal_str+":"+str(type(singnal_str)))

    def Class_signature_2_print(self,singnal_int):
        self.textBrowser.setText("訊號_2 "+":"+str(singnal_int)+":"+str(type(singnal_int)))

訊號與槽的連線:

        self.Class_signature[str].connect(self.Class_signature_1_print)

        self.Class_signature[int].connect(self.Class_signature_2_print)

原始碼:
原始碼