las*_*hon 5 python pyqt python-3.x pyqt5
我想在 GUI 显示后调用一个函数。如果我在init中运行函数,它会阻止 gui 在完成之前显示。
class MyApp(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setupUi(self)
self.function() #waits for this to finish until gui displayed
def function(self):
self.guiBox.setValue(initData)
#inits stuff, takes 5 seconds
Run Code Online (Sandbox Code Playgroud)
该函数通过串口初始化一个设备...需要几秒钟的时间,它获取gui属性并更新gui显示框。
小智 5
添加单次定时器1毫秒和呼叫后功能
class MyApp(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setupUi(self)
QTimer.singleShot(1,self.function) #waits for this to finish until gui displayed
def function(self):
self.guiBox.setValue(initData)
#inits stuff, takes 5 seconds
Run Code Online (Sandbox Code Playgroud)
耗时的任务是阻塞的,这违背了 GUI 上的自然工作方式,一个选项是使用qApp.processEvents(),例如:
def function(self):
self.guiBox.setValue(initData)
code1
QtWidgets.qApp.processEvents()
code2
QtWidgets.qApp.processEvents()
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10918 次 |
| 最近记录: |