Seite 1 von 1

Crosslink von einer Class zur anderen

Verfasst: Montag 16. August 2010, 11:33
von Frederik
Ich versuche, aus einer "subclass" (NoteScans) eine Variable in einer anderen "subclass" (NoteFrames) zu setzen (ohne Verwendung von globalen Variablen): mein Code laesst sich reduzieren auf folgendes:

Code: Alles auswählen

import wx


class NoteFrames(wx.Panel):
	def __init__(self, parent):
		wx.Panel.__init__(self, parent, style=wx.WANTS_CHARS)
		self.number = 1

class NoteScans(wx.Panel):
	def __init__(self, parent):
		wx.Panel.__init__(self, parent, style=wx.WANTS_CHARS)
		self.pp = parent.GetParent()
		self.crosslink = self.pp.subclass_1
		print self.crosslink.number # Soll die Variable setzen / lesen / was auch immer

class MainWindow(wx.Frame):

	def __init__(self, parent, id, title):
		wx.Frame.__init__(self, parent, id, title, size=(1000,700))
		panel = wx.Panel(self, -1)
		self.subclass_1 = NoteFrames(panel)
		self.subclass_2 = NoteScans(panel)
		self.Show(True)


app = wx.App(0)

MainWindow(None, -1, 'Name')
app.MainLoop()
Leider bekomme ich folgende Fehlermeldung:
Traceback (most recent call last):
File "mdaProtest1.py", line 24, in <module>
MainWindow(None, -1, 'Name')
File "mdaProtest1.py", line 19, in __init__
self.subclass_1 = NoteScans(panel)
File "mdaProtest1.py", line 13, in __init__
self.crosslink = self.pp.subclass_2
AttributeError: 'MainWindow' object has no attribute 'subclass_2'
Auf der website http://zetcode.com/wxpython/firststeps/ findet sich ein aehnliches Beispiel, das funktioniert, ich finde aber partout keinen Fehler im obigen Code... :K

Kann mir jemand einen Tipp geben? :lol:

Herzlichen Dank im Voraus!

Frederik

Re: Crosslink von einer Class zur anderen

Verfasst: Montag 16. August 2010, 11:56
von .robert
Also die Fehlermeldung passt schon mal nicht zu dem Code, den du gepostet hast.

Re: Crosslink von einer Class zur anderen

Verfasst: Montag 16. August 2010, 12:03
von Frederik
Willst du wetten? :P

Aber es stimmt, die Zeilennummern sind um 1 verschoben, falls du das meinst.

Re: Crosslink von einer Class zur anderen

Verfasst: Montag 16. August 2010, 12:09
von BlackJack
@Frederik: Na dann lass uns wetten: Der Traceback gibt die Zeile ``self.crosslink = self.pp.subclass_2`` als Ursache an, die kommt in Deinem Quelltext nirgends vor. :roll:

Re: Crosslink von einer Class zur anderen

Verfasst: Montag 16. August 2010, 12:09
von .robert
Frederik hat geschrieben:Willst du wetten? :P
File "mdaProtest1.py", line 13, in __init__
self.crosslink = self.pp.subclass_2
AttributeError: 'MainWindow' object has no attribute 'subclass_2'
Diese Zeile kann ich in deinem Code nicht entdecken! Ich weiß, du hast wohl nur die Frames getauscht oder was auch immer, aber wer weiß was sich da noch eingeschlichen hat. Zeige am besten Code und Fehlermeldung, die dieser Code produziert, dann muss man nicht raten.

Re: Crosslink von einer Class zur anderen

Verfasst: Montag 16. August 2010, 12:13
von Frederik
Richtig :? Hast gewonnen.
Sorry.

Ich habe auch gerade selber den Fehler gefunden. Ich hatte in meiner Version auf dem Rechner die Deklarationsreihenfolge der beiden "subclasses" vertauscht, aber beim Schreiben im Browser richtig gemacht, daher ist der Code auch funktionsfaehig...

Also, danke fuers kritische Draufschauen :)

Frederik

Re: Crosslink von einer Class zur anderen

Verfasst: Montag 16. August 2010, 12:14
von .robert
Frederik hat geschrieben:aber beim Schreiben im Browser richtig gemacht,
Copy&Paste existiert!
(und sollte gerade in solchen Fällen wie diesem auch angewendet werden!)