PyQt5 使用多個槽函式時程式卡死

2021-10-03 19:55:59 字數 718 閱讀 5900

利用 pyqt5 製作窗體時,使用多個槽函式時程式出現卡死

typeerror: on_chkboxbold_clicked(

) missing 1 required positional argument:

'checked'

有兩個不同型別引數的clicked訊號時,connectslotsbyname()函式進行訊號與槽函式關聯時會使用乙個預設的訊號。

這對於 qcheckbox 來說,預設使用的是不帶引數的 clicked() 訊號。但是on_chkboxbold_clicked()是需要接收乙個引數作布林判斷的,因此會出現上述錯誤。

使用@pyqtslot裝飾器,這個裝飾器會宣告函式的引數型別,這樣connectslotsbyname()函式就會自動和clicked(bool) 訊號關聯,執行時就不會出現問題了。

from pyqt5.qtcore import pyqtslo

@pyqtslot(

bool

)def

on_checkboxbold_clicked

(checked)

:pass

Pyqt5槽函式傳參

qt中訊號發出的引數個數必須大於等於槽函式的引數個數,pyqt使用自定義引數傳遞解決槽函式引數比訊號引數多的問題。使用lambda表示式或functools的partial函式可以傳遞自定義引數給槽函式,自定義引數型別可以是python任意型別。import sys from functools i...

PyQt5基礎學習 多個訊號對應多個槽

這裡主要是有兩種情況 1.乙個訊號連線多個槽函式 2.多個訊號連線乙個槽函式 訊號槽n對n連線與斷開連線 from pyqt5.qtcore import class nnsignal qobject signal1 pyqtsignal signal2 pyqtsignal int signal3...

pyqt5 訊號與槽

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