【发布时间】:2017-11-18 16:16:56
【问题描述】:
self.dialogBox.close()
self.state = "processing"
self.__clearLayout(self.layout)
print(1)
self.controller.process()
我正在运行以下代码。对话框是一个 PyQt 对话框,self.state 只是一个当前状态,self.__clearLayout 清除 PyQt 小部件的当前布局,print(1) 用于调试目的,self.controller.process() 是处理事物并需要一会儿。我的目标是清除 UI,然后有我的程序进程,但它是乱序的。它打印 1 并开始处理,这告诉我它是有序的,但 UI 直到处理完成后才设置。有关如何解决此问题的任何提示?
def processUi(self):
self.dialogBox.close()
self.state = "processing"
self.__clearLayout(self.layout)
#label
processingLabel = QtWidgets.QLabel()
processingLabel.setMaximumSize(500, 500)
processingLabel.setFont(QtGui.QFont("Mono", 16))
processingLabel.setText("Processing...may take a few minutes.")
#set the current layout
currentLayout = QtWidgets.QVBoxLayout()
currentLayout.setContentsMargins(0,0,0,0)
currentLayout.addStretch()
currentLayout.addWidget(processingLabel)
currentLayout.addStretch()
self.layout.addStretch()
self.layout.addLayout(currentLayout)
self.layout.addStretch()
#thread for processing
processing = multiprocessing.Process(target=self.controller.process, args=())
processing.start()
processing.join()
self.finishedUi()
这是完整的代码。目标是设置您在处理工作时看到的 ui 代码,一旦处理完成,调用finishedUi。
【问题讨论】: