pyqt必须是主线程吗?

时间:2018-02-04 21:09:21

标签: python user-interface pyqt5

我正在使用PyQt5在现有程序之上构建GUI。现有程序有自己的驱动程序文件,我想从所述驱动程序的接口收集用户输入。问题是我无法使用结束程序的sys.exit()来解决问题。

以下是我想用来为用户显示GUI的函数:

 def gui():
     import sys
     app = QtWidgets.QApplication(sys.argv)
     MainWindow = QtWidgets.QMainWindow()
     ui = Ui_MainWindow()
     ui.setupUi(MainWindow)
     MainWindow.show()
     sys.exit(app.exec_())
     return ui.argv

我的Ui_MainWindow类有一个实例argv,它保存通过界面输入的所有用户输入。我想将gui()作为模块导入到我的驱动程序中并执行usr_input = gui()之类的操作。当然,由于usr_input调用,上面的代码将在返回变量sys.exit()之前终止。

我很清楚,从gui调用我的驱动程序来启动程序是有效的。例如,按钮动作可以包括调用驱动程序。然而,这最好是不美观的,最糟糕的是非常烦人的结构:我希望驱动程序成为我程序的主线程,无论我是否使用命令行界面或我的自定义GUI。

我还尝试删除sys.exit(app.exec_())调用并将其更改为app.exec(),但在这种情况下,GUI窗口永远不会打开...

那么我如何解决sys.exit()终止整个程序同时仍然让GUI窗口显示并正常运行的事实?

感谢您的帮助!

0 个答案:

没有答案