簡體   English   中英

使用部分函數傳遞值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM