【发布时间】:2016-09-29 21:19:54
【问题描述】:
您好,我一直在 Windows 上使用 PyQt 4.8 创建一个简单的 gui 应用程序。 gui(主窗口)有一个按钮和一个 QLineEdit 小部件。按下按钮只需调用一个函数来处理 QLineEdit 小部件的内容。 到目前为止,它运作良好。我的主要是这样的
class StartQt4App(QtGui.QMainWindow):
def process_stuff(self,param):
#Do stuff here
if __name__="__main__":
app=QtGui.QApplications(sys.argv)
myapplication=StartQt4App()
myapplication.show()
sys.exit(app.exec_())
使用 py2exe 我可以创建一个 Windows 可执行文件,例如 mygui_app.exe 但是我想对其进行调整,以便它可以从 Windows 命令行运行。即如果用户键入
运行 mygui_app.exe "c:\text_file.txt"
应用程序启动,这次没有 GUI,并自动处理调用应用程序时输入的参数。
到目前为止,这是我想出的
class StartQt4App(QtGui.QMainWindow):
def process_stuff(self,param):
#Do stuff here
def process_stuff_again(self,param):
#Do stuff here
return
if __name__="__main__":
if len(sys.argv)==1:
app=QtGui.QApplications(sys.argv)
myapplication=StartQt4App()
myapplication.show()
sys.exit(app.exec_())
else:
app=QtGui.QApplications(sys.argv)
myapplication=StartQt4App()
myapplication.process_stuff_again(param)
sys.exit(app.exec_())
基本上,如果应用程序已使用我不想/不需要显示 gui 的参数调用,只需调用处理函数即可。处理完成后直接退出
目前它可以工作,至少就处理文件而言。但是,一旦处理完成,它就不会退出。相反,该程序保持活动状态(我可以使用 Windows 任务管理器看到它)。
我的问题是如何以编程方式退出应用程序?这样一旦完成,它就会彻底关闭。
我试过
- app.quit()
- app.exit()
- myapplication.exit()
- myapplication.quit()
没有工作,本质上该应用程序仍然存在并且正在运行。无奈之下,我删除了
sys.exit(app.exec_())
从代码的 else 部分开始,现在它只是崩溃了,因为它处理文件然后立即崩溃。经常崩溃。
关于如何干净地让应用程序在从命令行调用时很好地关闭有什么建议吗?
【问题讨论】:
标签: qt python-2.7 pyqt qt4