PyQt无法使用text()从QlineEdit获取文本

时间:2016-11-10 13:18:01

标签: python user-interface pyqt4

我有一个QlineEdit,同时使用此代码从中恢复文本:

doc = self.lineEdit_2.text()

def pushButton_7_clicked(doc):
    print(doc)

self.pushButton_7.clicked.connect(pushButton_7_clicked)

我没有收到任何错误,但会打印False QlineEdit是否包含文字。

1 个答案:

答案 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)