我有一个应用程序可以从命令行启动,使用可选的文件名作为参数。如果存在这个文件应该在启动时加载。由于文件的处理需要一些时间,因此fileOpen()
会阻止程序并显示加载指示符。完成GUI呈现后,在程序启动时执行长时间运行的代码
在正常操作期间,这没关系。但是,当我尝试在启动时执行相同操作(如下所示)时,窗口的轮廓出现在show()
之后,但其内容直到app.exec_()
才呈现。
我的问题:我该如何处理这种情况?
app.exec_()
之前,我不能把fileOpen()
因为那时GUI尚未完全呈现。而且我不能通知用户加载仍在处理中。- 我不能放?之后
app.exec_()
因为它不会被执行直到程序结束。
示例代码:
def main(args):
app = QtGui.QApplication()
mainwindow = MainWindow()
mainwindow.show()
if args.filename:
mainwindow.fileOpen(args.filename)
ret_val = app.exec_()
sys.exit(ret_val)
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('filename', help='(optional) file to load at startup')
args = parser.parse_args()
main(args)
你是什么意思,当你说:**图形用户界面还没有完全呈现**? – eyllanesc
尝试在fileOpen()内调用qApp.processEvents() – eyllanesc