相关疑难解决方法(0)

使用PyQt4进行核心转储

我从PyQt4开始,在最简单的示例中使用QGraphicsScene/View时面临着一个coredump:

#!/usr/bin/python

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

app = QApplication(sys.argv)

grview = QGraphicsView()
scene = QGraphicsScene()
grview.setScene(scene)

grview.show()

sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

该程序运行,但关闭它时,它会产生大量的GTK错误(使用Ubuntu),最后是核心转储(分段错误):

(python:2732): Gtk-CRITICAL **: IA__gtk_container_add: assertion `GTK_IS_CONTAINER (container)' failed

(python:2732): Gtk-CRITICAL **: IA__gtk_widget_realize: assertion `GTK_WIDGET_ANCHORED (widget) || GTK_IS_INVISIBLE (widget)' failed

(python:2732): Gtk-CRITICAL **: IA__gtk_widget_realize: assertion `GTK_WIDGET_ANCHORED (widget) || GTK_IS_INVISIBLE (widget)' failed

(python:2732): Gtk-CRITICAL **: IA__gtk_container_add: assertion `GTK_IS_CONTAINER (container)' failed

(python:2732): Gtk-CRITICAL **: IA__gtk_widget_realize: assertion `GTK_WIDGET_ANCHORED (widget) || GTK_IS_INVISIBLE (widget)' failed

(python:2732): Gtk-CRITICAL **: IA__gtk_widget_realize: assertion `GTK_WIDGET_ANCHORED …
Run Code Online (Sandbox Code Playgroud)

ubuntu pyqt4

6
推荐指数
1
解决办法
3002
查看次数

QML 不拥有从 PyQt 插槽接收的对象的所有权

从 QML 调用 Python 函数的正确方法是什么,该函数将实例化并将对象返回给 QML,并使 QML 端负责对象的生命周期?我面临的问题是对象在到达 QML 之前就被垃圾收集了。

请注意,我不想在 Python 端保留对对象的显式引用,根据文档中的以下引用,我正在寻找的甚至应该是默认行为:

当数据从 C++ 传输到 QML 时,数据的所有权始终属于 C++。此规则的例外是当从显式 C++ 方法调用返回 QObject 时:在这种情况下,QML 引擎假定对象的所有权......

我创建了一个最小的可运行示例来演示问题(要点链接):

主要.py:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import sys
import signal
from PyQt5.QtGui import QGuiApplication
from PyQt5.QtQuick import QQuickView
from PyQt5.QtCore import QUrl, QObject, QVariant, pyqtSlot
from PyQt5.QtQml import QQmlEngine, qmlRegisterType


class Dummy(QObject):

    def __del__(self):
        print("Deleted")


class GUIEntryPoint(QObject):

    @pyqtSlot(result=QVariant)
    def get_foo(self):
        foo = Dummy()
        print("Created {}".format(foo)) …
Run Code Online (Sandbox Code Playgroud)

qt pyqt qml pyqt5

5
推荐指数
1
解决办法
1416
查看次数

标签 统计

pyqt ×1

pyqt4 ×1

pyqt5 ×1

qml ×1

qt ×1

ubuntu ×1