我试图在Lineedit中显示循环数据,但它没有更新。即使是print命令也不会在终端上打印数据,直到我在lineedit中按下return以外的任何键。请看一下程序并向我建议更改:
import sys
import time
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class MyFrame(QWidget):
def __init__(self):
QWidget.__init__(self)
self.le = QLineEdit(self)
self.le.setGeometry(200,200,75,35)
i=0
self.le.setText(str(i))
self.connect(self.le, SIGNAL("textChanged(QString)"),self.updatedvalue)
def updatedvalue(self):
for i in range(1,5):
self.le.setText(str(i))
print(i)
time.sleep(1)
app=QApplication(sys.argv)
f=MyFrame()
f.show()
app.exec_()
在更新
QLineEdit
的文本后,您需要调用QApplication.instance.processEvents()
来强制更新,否则直到最后一个号码,您才会看到任何内容。在您还需要将
textChanged()
信号改为textEdited()
。使用textChanged()
你的updatedvalue()
函数将在循环的第一次循环中再次调用,因为你正在更新QLineEdit
的文本。如果以编程方式更新文本,则不会触发textEdited()
信号。在正如Bob提到的,使用QTimer会更好。在
相关问题 更多 >
编程相关推荐