我用一个QLineEdit编写了下面的代码片段,可以通过按下“添加文本”按钮进行编辑。
import sys
import os
from PyQt4 import QtGui
from PyQt4 import *
class SmallGUI(QtGui.QMainWindow):
def __init__(self):
super(SmallGUI,self).__init__()
self.initUI()
def initUI(self):
self.setGeometry(300,300,300,300)
self.setWindowTitle('Sample')
#One input
self.MyInput = QtGui.QLineEdit(self)
self.MyInput.setGeometry(88,25,110,20)
###############
QtCore.QObject.connect(self.MyInput,QtCore.SIGNAL("textChanged(bool)"),self.doSomething)
#Add Text
self.MyButton = QtGui.QPushButton(self)
self.MyButton.setGeometry(QtCore.QRect(88,65,110,20))
self.MyButton.setText('Add Text')
###############
QtCore.QObject.connect(self.MyButton,QtCore.SIGNAL("clicked(bool)"),self.addText)
self.show()
def addText(self):
self.MyInput.setText('write something')
def doSomething(self):
print "I'm doing something"
def main():
app = QtGui.QApplication(sys.argv)
sampleForm = SmallGUI()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
我想做的是在QLineEdit的文本以编程方式更改时执行一个操作,即单击“添加文本”按钮,执行以下操作:
QtCore.QObject.connect(self.MyInput,QtCore.SIGNAL("textChanged(bool)"),self.doSomething)
我使用“text changed”信号的原因与类documentation所说的有关,即“当以编程方式更改文本时(例如,通过调用setText())也会发出此信号。”
但是这不起作用,因为print语句没有执行。有人能帮我吗?
问题是信号是而不是
textChanged(bool)
,因为它接受一个字符串参数,所以它可能是:textChanged(str)
。为了避免这种错误,您应该使用new-style syntax来连接信号:
这种语法有几个优点:
相关问题 更多 >
编程相关推荐