1

编写了一个由 QT GUI 模块组成的小应用程序,该模块反过来启动一个继承自 ShowBase 类的对象。

问题是,如果我关闭 Panda 应用程序,ShowBase 类会调用 finalizeExit(),而后者又会通过调用 exit 来关闭整个进程。

如果我通过覆盖 userExit() 避免调用 finalize 方法,则不会删除应用程序的资源并且任务管理器会继续工作。

有没有办法在不调用exit的情况下关闭熊猫应用程序?

4

2 回答 2

1

至少在最近的 Panda 开发版本中,您应该能够调用base.destroy()关闭 ShowBase 并卸载(大部分)资源。finalizeExit()当主窗口关闭时,您仍然需要覆盖以不退出应用程序。

于 2017-04-10T13:14:02.587 回答
0

也许我的回答来得太晚了,但它可能会帮助其他人。我有同样的问题,但 Tkinter 不是 QT。

你可以做的是在你调用你的应用程序的类之后:

app = my_class(...)

try: app.run()
except SystemExit: base.destroy()

这控制熊猫如何关闭应用程序。在这种情况下,它根本不会调用 finalizeExit()。base.destroy() 将销毁打开的窗口。

于 2019-10-30T14:40:07.717 回答