[英]Passing values using partial functions
單擊QPushButton時,我正在使用部分函數將值傳遞給函數參數。
self.SearchButton1 = QPushButton("Search")
self.SearchStudent1 = QLineEdit()
下面是它的連接方式:
self.connect(self.SearchButton1, SIGNAL("clicked()"),
partial(self.Searching, self.SearchStudent1.text()))
調用的函數如下:
def Searching(self, num):
print self.SearchStudent1.text()
print num
我不確定為什么不打印num
,而self.SearchStudent1.text()
可以在按下“搜索”按鈕時正確打印。
請建議我是否有任何遺漏。
編輯 :
我可以使用部分函數傳遞QLineEdit對象並使用它:
self.connect(self.SearchButton1, SIGNAL("clicked()"),
partial(self.Searching, self.SearchStudent1))
def Searching(self, num):
print self.SearchStudent1.text()
print num.text() # works fine
部分函數將緩存傳遞給它的參數。 因此,如果在連接信號時line-edit為空,則始終將空字符串發送給被調用的方法。 (在使用print
進行調試時,最好使用repr
,這樣您就可以輕松看到""
或None
等輸出值)。
如果希望在單擊按鈕時將當前文本發送到插槽,則可以使用lambda
函數,如下所示:
self.connect(self.SearchButton1, SIGNAL("clicked()"),
lambda: self.Searching(self.SearchStudent1.text())
或更簡單地說:
self.SearchButton1.clicked.connect(
lambda: self.Searching(self.SearchStudent1.text())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.