Seite 1 von 1

Multiple Vererbung von QFrame und QSvgWidget

Verfasst: Montag 9. Januar 2012, 21:38
von schnumbl
Hallo zusammen,

ich bin ein Python-Neuling und versuche in Python 2.7 eine Klasse zu erstellen, die Funktionen von QSvgWidget und QFrame erbt.
Ich bekomme die Fehlermeldung "AttributeError: 'ikwed_atom' object has no attribute 'load' ".
Meine Klasse ikwed_atom scheint nur von QFrame zu erben. Wie müssen die ersten Zeilen meiner Klasse aussehen,
damit ikwed_atom auch die load Funktion von QSvgWidget erbt?

Code: Alles auswählen

import sys
from PyQt4.QtCore import *
from PyQt4 import QtGui
from PyQt4 import QtSvg
        
class ikwed_atom(QtGui.QFrame, QtSvg.QSvgWidget):
    
    def __init__(self, ParentWidget, SvgString=""):
        super(ikwed_atom, self).__init__(ParentWidget)
        
        self.setFrameStyle(1)
        self.load(QByteArray(SvgString))
#...
Sonnige Grüße,

Stefan

Re: Multiple Vererbung von QFrame und QSvgWidget

Verfasst: Montag 9. Januar 2012, 21:57
von lunar
@schnumbl: Du kannst nicht von zwei oder mehr QObject-Klassen erben. Nicht einmal in C++. Anders gesagt, Du darfst immer nur eine einzige Basisklasse haben, in diesem Fall möchtest Du wohl einfach nur "QSvgWidget" nutzen.

Re: Multiple Vererbung von QFrame und QSvgWidget

Verfasst: Montag 9. Januar 2012, 22:19
von schnumbl
Hier steht in Kapitel 9.5.1 etwas von "multiple inheritance":
http://docs.python.org/tutorial/classes.html

Daher dachte ich dass es gehen könnte.

Aber dann muss ich wohl eine andere Möglichkeit finden um Rahmen zu zeichnen.
Wäre bequem gewesen, wenn ich die Funktion von der QFrame Klasse hätte
übernehmen können.

Re: Multiple Vererbung von QFrame und QSvgWidget

Verfasst: Montag 9. Januar 2012, 23:07
von lunar
@schumbl: In der Dokumentation von PyQt steht dazu auch etwas:
It is not possible to define a new Python class that sub-classes from more than one Qt class.
Das Tutorial alleine reicht nun mal nicht, Du musst schon auch die Dokumentation der von Dir verwendeten Bibliotheken lesen.

Um einen Rahmen um ein SVG-Element zu zeichnen, kannst Du dieses SVG Element einfach in ein "QFrame" einfügen. Das sollte eigentlich offensichtlich sein...

Re: Multiple Vererbung von QFrame und QSvgWidget

Verfasst: Dienstag 10. Januar 2012, 07:46
von schnumbl
Ok, alles klar. Vielen Dank für deine Hilfe!