pyqt5講解11 自定義訊號和槽

2021-10-07 10:47:27 字數 2807 閱讀 9300

步驟:

定義訊號

定義槽函式

連線訊號和槽函式

發射訊號

**示例:

# -*- coding: utf-8 -*-

""" 【簡介】

內建訊號槽訊號槽示例

"""from pyqt5.qtcore import qobject , pyqtsignal

class

custsignal

(qobject)

:# 宣告乙個無引數的訊號

signal1 = pyqtsignal(

)# 宣告帶乙個int型別引數的訊號

signal2 = pyqtsignal(

int)

# 宣告帶乙個int和str型別引數的訊號

signal3 = pyqtsignal(

int,

str)

# 宣告帶乙個列表型別引數的訊號

signal4 = pyqtsignal(

list

)# 宣告帶乙個字典型別引數的訊號

signal5 = pyqtsignal(

dict

)# 宣告乙個多過載版本的訊號,包括了乙個帶int和str型別引數的訊號或著帶str引數的訊號

signal6 = pyqtsignal(

[int

,str],

[str])

def__init__

(self,parent=

none):

super

(custsignal,self)

.__init__(parent)

# 訊號連線到指定槽

self.signal1.connect(self.signalcall1)

self.signal2.connect(self.signalcall2)

self.signal3.connect(self.signalcall3)

self.signal4.connect(self.signalcall4)

self.signal5.connect(self.signalcall5)

self.signal6[

int,

str]

.connect(self.signalcall6)

self.signal6[

str]

.connect(self.signalcall6overload)

# 訊號發射

self.signal1.emit(

) self.signal2.emit(1)

self.signal3.emit(1,

"text"

) self.signal4.emit([1

,2,3

,4])

self.signal5.emit(

) self.signal6[

int,

str]

.emit(1,

"text"

) self.signal6[

str]

.emit(

"text"

)#槽函式

defsignalcall1

(self)

:print

("signal1 emit"

)def

signalcall2

(self,val)

:print

("signal2 emit,value:"

,val)

defsignalcall3

(self,val,text)

:print

("signal3 emit,value:"

,val,text)

defsignalcall4

(self,val)

:print

("signal4 emit,value:"

,val)

defsignalcall5

(self,val)

:print

("signal5 emit,value:"

,val)

defsignalcall6

(self,val,text)

:print

("signal6 emit,value:"

,val,text)

defsignalcall6overload

(self,val)

:print

("signal6 overload emit,value:"

,val)

if __name__ ==

'__main__'

: custsignal = custsignal(

)

執行結果:

說明:pyqtsignal() 訊號函式 無引數

pyqtsignal(int) 傳入整數

pyqtsignal([int,str], [str]) 表示可以傳入兩種 格式

訊號發射 :emit()

訊號6 有兩種傳入方法 如果不指定,預設傳入第一種。指定方法

見下面self.signal6[int,str].emit(1,「text」)

self.signal6[str].emit(「text」)

本文 記錄下學習筆記

覺得有用的就記錄

PyQt5 自定義訊號槽函式

1 簡介 自定義訊號槽函式,當訊號傳送的時候,可以呼叫被繫結的槽函式 2 功能實現 coding utf 8 簡介 內建訊號槽示例 from pyqt5.qtcore import qobject,pyqtsignal 訊號物件 class qtypesignal qobject 定義乙個訊號 se...

pyqt5 自定義訊號與槽

coding utf 8 from pyqt5.qt import a 0class window qwidget 宣告無引數的訊號 signal1 pyqtsignal 宣告帶乙個int型別引數的訊號 signal2 pyqtsignal int 宣告帶int和str型別引數的訊號 signal3...

總結 PyQt5自定義訊號源

定義乙個訊號源有4個方面要注意 1.定義訊號源 a pyqtsignal str int,str 這裡特別使用訊號源過載的情況加以說明。如上就是訊號源a的過載,乙個可以傳送str引數,另乙個可以傳送 int,str 引數。注意這相當於宣告了兩個同名但引數不同的訊號源。2.鏈結 槽 a int,str...