如何异步使用pyqt4 gui?
How to pyqt4 gui used asynchronously?
此代码在循环开始时停止 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
GUI 有一个默认循环,这被消耗太多时间的循环阻止,并产生应用程序冻结或不适当的行为,一个简单的解决方法是使用 processEvents()
def testFunc(self) :
for i in xrange(1000000) :
QtGui.qApp.processEvents()
pass
此代码在循环开始时停止 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
GUI 有一个默认循环,这被消耗太多时间的循环阻止,并产生应用程序冻结或不适当的行为,一个简单的解决方法是使用 processEvents()
def testFunc(self) :
for i in xrange(1000000) :
QtGui.qApp.processEvents()
pass