我有一个QlineEdit
,同时使用此代码从中恢复文本:
doc = self.lineEdit_2.text()
def pushButton_7_clicked(doc):
print(doc)
self.pushButton_7.clicked.connect(pushButton_7_clicked)
我没有收到任何错误,但会打印False
QlineEdit
是否包含文字。
答案 0 :(得分:2)
clicked
信号(请参阅docs)将属性传递给pushButton_7_clicked
回调:
void QAbstractButton :: clicked(bool checked = false)
当按钮被激活(即按下时)发出此信号 然后当鼠标光标在按钮内时释放,当时 键入快捷键,或者调用click()或animateClick()时。 值得注意的是,如果调用setDown(),则不会发出此信号, setChecked()或toggle()。
如果按钮是可检查的,如果选中该按钮,则选中该选项, 如果未选中该按钮,则为false。
因此,当您定义回调时,第一个参数是checked
boolean。
在回调定义中调用doc
并没有任何区别。您在这里没有传递您的doc实例。你得到的是checked
布尔值,它始终是False
。
这是一个纯粹的蟒蛇问题。
a = 12
def b(a):
print(a)
b(69)
这会打印69而不是12.您在函数范围内重新定义a
(在您的情况下为doc
)。
此外,写下来也没有意义:
doc = self.lineEdit_2.text()
因为这只在导入时执行一次。
你可以尝试这样的事情。请注意,您需要将该回调放入对象中,以便绑定到该对象并在self
中引用自身。
class YourObject():
def pushButton_7_clicked(self, checked):
print(self.lineEdit_2.text())
self.pushButton_7.clicked.connect(self.pushButton_7_clicked)