我有一個應用程序可以從命令行啓動,使用可選的文件名作爲參數。如果存在這個文件應該在啓動時加載。由於文件的處理需要一些時間,因此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