我正在使用部分函数将值传递给函数参数,点击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
答案 0 :(得分:0)
partial function将缓存传递给它的参数。因此,如果在连接信号时行编辑为空,则始终将空字符串发送到被调用的方法。 (在使用repr
进行调试时使用print
始终是个好主意,这样您就可以轻松查看""
或None
等输出值。
如果您希望在单击按钮时将当前文本发送到插槽,则可以使用lambda
功能,如下所示:
self.connect(self.SearchButton1, SIGNAL("clicked()"),
lambda: self.Searching(self.SearchStudent1.text())
或更简单:
self.SearchButton1.clicked.connect(
lambda: self.Searching(self.SearchStudent1.text())