pyqt 槽任意引數 PyQt5中訊號連線槽的方法

2021-10-17 06:49:42 字數 2041 閱讀 5560

訊號連線槽的方法有4種:

在建立 widget 的時候使用訊號作為關鍵字引數,其值為連線的槽函式名

使用訊號的 connect() 方法連線到槽

使用 qwidget 的 pyqtconfigure() 方法配置

通過函式名稱連線槽

下面這個例子演示了同乙個訊號使用不同的方法連線不同的槽的方法,也演示了如何通過 widget 的 objectname 來找到它,還演示了如何使用 widget 的 pyqtconfigure() 方法來配置它的屬性。

signals_slots_demo.pyw

qhboxlayout, qpushbutton, qmessagebox, qvboxlayout)

from pyqt5.qtcore import qmetaobject

class mainwindow(qwidget):

def __init__(self):

super().__init__(none)

self.initui()

def initui(self):

main_layout = qhboxlayout()

# 第一種訊號與槽連線的方法

cb_font = qfontcombobox(currentfontchanged=self.changelabelfont)

cb_font.pyqtconfigure(objectname='fontcombo', editable=false)

# 第二種訊號與槽連線的方法

cb_font.currentfontchanged.connect(self.changebuttonfont)

main_layout.addwidget(cb_font)

label = qlabel()

label.pyqtconfigure(text='示例文字!', objectname='label')

main_layout.addwidget(label)

closebutton = qpushbutton('關閉')

# 第三種連線訊號與槽的方法

closebutton.pyqtconfigure(objectname='button', clicked=self.close)

main_layout.addwidget(closebutton)

vhbox = qvboxlayout()

vhbox.addlayout(main_layout)

vhbox.addstretch(1)

self.setlayout(vhbox)

# 第四種連線訊號與槽的方法

qmetaobject.connectslotsbyname(self)

def changelabelfont(self, c_font):

label = self.findchild(qlabel, 'label')

label.setfont(c_font)

def changebuttonfont(self, c_font):

button = self.findchild(qpushbutton, 'button')

button.setfont(c_font)

def on_fontcombo_currentfontchanged(self, c_font):

通過 widget 的 objectname 來連線槽,槽的名稱如下所示:

on__()

在我們的這個例子中, object name 是 fontcombo; signal name 是 currentfontchanged; 訊號的引數是 c_font, 表示選擇的字型

qmessagebox.information(self, '提示資訊', '選擇的字型名稱是:%s' % c_font.family())

if __name__ == '__main__':

import sys

w = mainwindow()

w.resize(500, 400)

w.show()

signals_slots_demo.gif

學習PyQt5(三) PyQt5的訊號和槽

我 如圖所示,我們建立乙個按鈕及乙個瀏覽器。什麼是訊號?比如按鈕的單擊,雙擊,按下,釋放等,都可以認為是乙個訊號 什麼是槽?對應的訊號,做出什麼應對,這要乙個應對在乙個函式中,我們可以認為這就是乙個訊號 槽關係 在qt designer中點選工具欄 注意不是工具盒 中的這個圖示 點選這個圖示後,就進...

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...