如何异步使用pyqt4 gui?

时间:2017-09-18 02:00:30

标签: python python-2.7 pyqt pyqt4

此代码在循环启动时停止GUI。并且,文本追加操作结束循环。

我不想停止GUI,我希望文本能够实时显示。

from PyQt4 import QtCore, QtGui
class MyFrom(QtGui.QMainWindow) :
    def __init__(self, parent=None) :
        QtGui.QWidget.__init__(self, parent)

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.ui.btn_start.clicked.connect(self.setOptionState)

    def setOptionState(self) :
        for i in xrange(5) :
            self.ui.textBrowser.append("[+] Case : %d\n" % i)
            self.testFunc()

    def testFunc(self) :
        for i in xrange(100000000) :
            pass

1 个答案:

答案 0 :(得分:1)

GUI有一个默认循环,这会被消耗太多时间的循环阻塞,并产生应用程序冻结或不适当的行为,一种简单的解决方法是使用processEvents()

def testFunc(self) :
    for i in xrange(1000000) :
        QtGui.qApp.processEvents()
        pass