PyQt5 訊號與槽 裝飾器定義槽函式

2022-05-06 14:03:11 字數 1735 閱讀 3372

使用方法:

@pyqt5.qtcore.pyqtslot(引數)

def on_傳送者物件名稱_發射訊號名稱(self,引數):

pass

使用方法有效的前提是下面函式執行的情況下:

qmetaobject.connectslotsbyname(qobecjt)

案例:

1

from pyqt5 import

qtcore

2from pyqt5.qtwidgets import

3import

sys4

5class

custwidget(qwidget):

6def

__init__(self, parent =none):

7 super(custwidget,self).__init__

(parent)

89 self.okbutton = qpushbutton('ok'

, self)10#

使用setobjectname函式設定物件的名字,newbutton 後面要用到

11 self.okbutton.setobjectname('

newbutton')

12 layout =qhboxlayout()

13layout.addwidget(self.okbutton)

14self.setlayout(layout)

15qtcore.qmetaobject.connectslotsbyname(self)

1617

@qtcore.pyqtslot()

18def

on_newbutton_clicked(self):

19print('

單擊了ok按鈕')

2021

#self.okbutton.clicked.connect(self.newbutton_clicked)22#

23#def newbutton_clicked(self):24#

print('單擊了ok按鈕')

下面這段**的核心就是qtcore.qmetaobject.connectslotsbyname(self)

qtcore.qmetaobject.connectslotsbyname(self)

@qtcore.pyqtslot()

defon_newbutton_clicked(self):

print('單擊了ok按鈕')

與下面的寫法效果一樣:

#     self.okbutton.clicked.connect(self.newbutton_clicked)## def newbutton_clicked(self):#     print('單擊了ok按鈕')

如果只寫一兩個槽函式可能不覺得,如果多了 這句話就可以省很多事。而且結構上會更清晰。

pyqt5 訊號與槽

描述self.obj.destroyed.connect destroy cao 觸發後會執行槽函式,並給槽函式返回釋放物件 self.obj.blocksignals true 臨時打斷訊號 self.obj.objectnamechanged.disconnect 斷開訊號與槽的連線 self....

pyqt5 訊號與槽

訊號與槽 是pyqt的精髓,要多總結學習一下 定義通俗解釋 事件源 狀態發生改變的物件,它產生事件 source obj 按鈕 物件 事件目標 是想要被通知的物件 target obj 被點選 狀態發生改變 事件物件 封裝了事件源中的狀態變化 evnet obj 執行 呼叫函式 def use se...

Pyqt5 訊號與槽 一

ui介面如下 思路 按下對應按鍵顯示對應訊號文字。主要說自定義訊號,qt控制項自帶訊號就不說了。訊號定義需要呼叫庫 qobejcet,pyqtsignal from pyqt5.qtcore import qobject,pyqtsignal 類內部訊號與槽 class signal pyqtsig...