我最近从 tkinter 更改为 Pyqt5,因为我正在 Python 3.7.8 中开发一个半大型应用程序
每次我不得不关闭窗口时,我都会使用该方法self.destroy(),并且有一个很小的机会,当我关闭所有程序并且没有窗口时,解释器仍在运行,我需要手动终止进程,即使在使用sys.exit(app.exec_())
我可以让程序运行 15 秒或 30 分钟,它是完全随机的。
我刚刚看到另一个名为 的方法self.close(),所以我用它替换了self.destroy(),但我不确定这是否是预期的做法或者是否有更好的方法。我还得检查一下问题是否不再出现。
self.destroy使用或用于pyqt5应用程序更好self.close?有没有更好的办法?
关闭此小部件。
释放窗口系统资源。[...] 该函数通常从 QWidget 析构函数中调用。
如果您使用close()小部件,则可以在需要时再次打开/显示它,但如果该小部件是顶级窗口并且是最后一个可见的窗口,则 Qt 将自动退出应用程序(假设 QApplication 有设置quitOnLastWindowClosed(),这是默认设置)行为)。在这种情况下,PyQt 将自动销毁窗口并释放内存,这意味着destroy()无论如何都会调用它。
请注意,如果窗口没有其他引用或父级,则窗口在关闭时也会自动销毁:与任何其他 python 对象一样,垃圾收集器将删除窗口小部件及其子窗口,这会导致调用 QWidget 销毁器。
因此,您应该始终调用close(),因为它确保 Qt 遵循正确的步骤:发送 QCloseEvent (如果需要,可以忽略)并通知应用程序,以便如果窗口是最后一个窗口,它实际上可以退出。
| 归档时间: |
|
| 查看次数: |
7267 次 |
| 最近记录: |