QLineEdit.setText仅在函数

时间:2016-07-22 11:33:44

标签: python-3.x pyqt pyqt4 qlineedit

我正在尝试为我的学士论文编程。主要部分有效,所以现在我想实现一个用户界面。我观看了一些教程,并通过试验和错误工作,我的用户界面也有效。到现在为止还挺好。但昨天我改变了一件小事,但这并不是我想要的。我有一个按钮说“启动程序”,还有一个行编辑,我想显示当前状态。我的代码是:

import sys
from PyQt4 import QtGui
from theguifile import Ui_MainWindow
import otherfile

class Main(QtGui.QMainWindow):

    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.ui=Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.mybutton.clicked.connect(self.runprogram)

   def runprogram(self):
        self.ui.mylineedit.setText('Running') # doesnt work
        try:
            otherfile.therealfunction() # works
        except ErrorIwanttocatch:
            self.ui.mylineedit.setText('thisErrorhappened') # works
        else:
            self.ui.mylineedit.setText('Success') # works

app = QtGui.QApplication(sys.argv)
window = Main()
sys.exit(app.exec_())

除了lineedit.setText('Running')之外,一切都按照我的要求运作。我想要的是在otherfile.therealfunction工作时显示“正在运行”。我想我必须以某种方式更新行编辑?但直到现在我还没弄明白我该怎么做。我还设置了行编辑只读,因为我不希望用户能够更改它,所以可能这是一个问题?我认为readonly只会影响用户可以做的事情。

我在Qt Designer中使用Python3和PyQt4。

1 个答案:

答案 0 :(得分:0)

调用otherfile.therealfunction()将阻止所有ui更新,直到该功能完成。您可以尝试强制立即进行ui更新,如下所示:

   def runprogram(self):
        self.ui.mylineedit.setText('Running')
        QtGui.qApp.processEvents()