Python PySide(内部 c++ 对象已删除)

标签 python pyside

我最近决定用 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/

相关文章:

python - Virtualenv 中的 TKinter

python - 只打包用 Cython 编译的 python 库的二进制编译 .so 文件

python - Tkinter 和线程

python - 模拟鼠标释放 Pyqt

python - 在 QML 中制作隐藏/弹性项目

python-2.7 - QtGui.QPushButton.clicked.connect() 带有带有参数的函数

python - Django 从 1.7.1 升级到 1.9.2。导入错误 : cannot import name 'importlib'

python - 有什么简单的方法可以在 Python 中绘制一个可以旋转的 3d 散点图吗?

python - Django 的 call_command 在线程内的问题

python - 对基于 PySide 的应用程序进行单元和功能测试?