Python 更改QLineEdit文本时执行操作(以编程方式)

Python 更改QLineEdit文本时执行操作(以编程方式),python,pyqt,Python,Pyqt,我已经用QLineEdit编写了以下代码段,可以通过按下“添加文本”按钮进行编辑 我想做的是在QLineEdit的文本以编程方式更改时执行操作,即单击“添加文本”按钮,执行以下操作: QtCore.QObject.connect(self.MyInput,QtCore.SIGNAL("textChanged(bool)"),self.doSomething) 我使用信号“textChanged”的原因与类所说的有关,即“当以编程方式更改文本时,也会发出此信号,例如,通过调用setText()

我已经用QLineEdit编写了以下代码段,可以通过按下“添加文本”按钮进行编辑

我想做的是在QLineEdit的文本以编程方式更改时执行操作,即单击“添加文本”按钮,执行以下操作:

QtCore.QObject.connect(self.MyInput,QtCore.SIGNAL("textChanged(bool)"),self.doSomething)
我使用信号“textChanged”的原因与类所说的有关,即“当以编程方式更改文本时,也会发出此信号,例如,通过调用setText()


但是,这不起作用,因为未执行print语句。有人能帮我吗

问题在于信号不是
textChanged(bool)
,因为它需要一个字符串参数,所以它可能是:
textChanged(str)

为避免此类错误,应使用连接信号:

self.MyInput.textChanged.connect(self.doSomething)
# or:
self.MyInput.textChanged[str].connect(self.doSomething)
这种语法有几个优点:

  • 更清楚
  • 它不那么冗长,更具可读性
  • 它提供了更多的错误检查,因为如果信号不存在,就会引发错误。使用旧语法不会引发错误,但信号也没有连接,结果就是您看到的行为
self.MyInput.textChanged.connect(self.doSomething)
# or:
self.MyInput.textChanged[str].connect(self.doSomething)