qt中訊號發出的引數個數必須大於等於槽函式的引數個數,pyqt使用自定義引數傳遞解決槽函式引數比訊號引數多的問題。使用lambda表示式或functools的partial函式可以傳遞自定義引數給槽函式,自定義引數型別可以是python任意型別。
import sys
from functools import partial
class
mainwindow
(qwidget)
:def
__init__
(self, parent=
none):
super()
.__init__(parent)
button1 = qpushbutton(
"button1"
, self)
button2 = qpushbutton(
"button2"
, self)
layout = qhboxlayout(
) layout.addwidget(button1)
layout.addwidget(button2)
self.setlayout(layout)
self.setwindowtitle(
"mainwindow demo"
) self.resize(
800,
600)
# lambda
button1.clicked.connect(
lambda
: self.onbuttonclicked(1)
) button2.clicked.connect(
lambda
: self.onbuttonclicked(2)
)# partial
button1.clicked.connect(partial(self.onbuttonclicked,1)
) button2.clicked.connect(partial(self.onbuttonclicked,2)
)# 自定義槽函式
defonbuttonclicked
(self, n)
:print
("button is clicked"
.format
(n))
if __name__ ==
"__main__"
: window = mainwindow(
) window.show())
)
PyQt5 自定義訊號槽 不同傳參
1 簡介 自定義的訊號 傳遞不同的引數 2 功能實現 coding utf 8 簡介 內建訊號槽訊號槽示例 from pyqt5.qtcore import qobject pyqtsignal class custsignal qobject 宣告乙個無引數的訊號 signal1 pyqtsign...
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...