我最近决定用 Python 和 PySide 编写我的第一个应用程序。但是我有一个问题,希望你们能帮忙。
Python 不断引发“内部 C++ 对象”被删除的异常。根据我有限的 Python 经验,我认为我的对象超出范围并被 Python 的垃圾收集器删除。
那么我将如何使用 PySide 在 Python 中设计一个多页面应用程序。并且能够保留我的 QWidget,以便我可以再次显示该页面。
感谢您的宝贵时间。
更新(代码)
instancing = None
def instance():
global instancing
if instancing == None:
instancing = WPZKernel()
return instancing
class WPZKernel:
win = None
mainscreen = None
def mainwindow(self):
if self.win == None:
self.win = GMKMainWindow(self)
return self.win
def main_panel(self):
if self.mainscreen == None:
self.mainscreen = GMKMainScreen(self.mainwindow())
return self.mainscreen
然后我通常会通过调用访问主面板:
import kernel
kernel.instance().main_panel()
那么我是不是用错了方法?
最佳答案
经过一番搜索和拉扯,我找到了解决方案。我通过将它们设置为中央小部件来显示所有页面,并且在阅读 QMainWindow documentation 时我发现我的小部件基本上被 qt 删除了,如下所述:
Note: QMainWindow takes ownership of the widget pointer and deletes it at the appropriate time.
所以要开发多页应用程序,不如看看 QStackedWidget .
关于Python PySide(内部 c++ 对象已删除),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5339062/