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