2017-09-18 57 views
0

該代碼在循環開始時停止GUI。並且,文本追加操作結束循環。如何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

的GUI有一個默認的循環,這是由消耗了太多的時間,並生成應用程序凍結或不當行爲的循環受阻,解決一個簡單的方法是使用processEvents()

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