繁体   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