Ich verwende PyQt
, um eine Anwendung mit matplotlib
zu erstellen, und ich versuche, eine Methode von einer Klasse mit einer anderen Methode aus einer anderen Klasse zu verbinden.Verbinden von drei Klassen von Methoden innerhalb von ihnen in Python
Klasse A ist eine QMainWindow
, die class B
instanziieren, die eine matplotlib
Abbildung ist. Also, wenn ich Methode a
von class A
(verbunden mit einem QPushButton
) anrufe, ruft es class C
an, etwas zu tun, und dann muss es an method b
in class B
anschließen, um etwas anderes zu tun.
las ich eine Menge Codierung und ich fand das zum Beispiel:
python super calling child methods
, die ich tun wollte, aber es hat nicht funktioniert.
Dies ist der Code, den ich habe:
class A(QMainWindow):
def __init__(self):
super(QMainWindow, self).__init__()
#A lot of stuff in here
#I instantiate class B
self.call_B = B()
def a(self):
print "Hello"
self.open_C = C(self)
class B(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
#A lot of stuff in here
def b(self):
print "How are you?"
class C(B):
def __init__(self):
super(C, self).__init__()
#A lot of stuff in here
self.connect_to_b()
def connect_to_b(self):
#From here is where I need to call method b() from class B
Wie Sie oben sehen können, ich brauche Methode connect_to_b
von class C
zu Verfahren b
in class B
zu verbinden.
Wie kann ich das erreichen ?. Hoffe, du kannst mir helfen.
Wenn 'C' vom Typ' B' ist, hat es Zugriff auf 'b'. rufen Sie einfach 'b' mit' b() ' –
Vielen Dank für Ihren Kommentar. Ich habe das versucht, aber es hat nicht funktioniert. Vielleicht vermisse ich etwas. Ich bekomme diesen Fehler dabei: 'Globaler Name 'b' ist nicht definiert ' –
benutze' self.b() 'weil' b' in deiner Klasse ist –