如何避免 PyQt4 中的循環訊號連線問題?
在PyQt4 中連接插槽和訊號:解決循環訊號連接問題
嘗試在循環內連接PyQt4 中的訊號時,很常見遇到意外行為,例如所有按鈕都列印相同的值。這個問題源自於 Python 中作用域、名稱查找和閉包函數的方式。
在提供的程式碼中,用於連接按鈕的 lambda 函數缺少自己對變數 i 的綁定,而是在__init__ 方法的命名空間。因此,我總是假設循環中定義的最後一個值,在本例中為 9。
為了解決這個問題,Python 提供了多種解決方案,包括:
帶有預設值的關鍵字參數值:
透過將i 作為具有預設值的關鍵字參數傳遞,您可以在lambda 函數中建立一個新綁定:
self._numberButtons[i].clicked.connect(lambda checked, i=i: self._number(i))
functools.partial:
這透過使用所需的參數包裝函數呼叫來提供更簡潔和可讀的方法:
self._numberButtons[i].clicked.connect(partial(self._number, i))
利用這些技術確保每個按鈕的回調函數內的正確綁定,使每個按鈕能夠在以下情況下顯示其相應的值:點擊。
以上是如何避免 PyQt4 中的循環訊號連線問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

攻克Investing.com的反爬蟲策略許多人嘗試爬取Investing.com(https://cn.investing.com/news/latest-news)的新聞數據時,常常�...

Python3.6環境下加載pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

使用Scapy爬蟲時管道文件無法寫入的原因探討在學習和使用Scapy爬蟲進行數據持久化存儲時,可能會遇到管道文�...
