Tabelle auf Bildschirm ausgeben

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

sea-live hat geschrieben:

Code: Alles auswählen

class Tabelle(gridlib.Grid): ##, mixins.GridAutoEditMixin):
    def __init__(self,pfad,listenname,dateiname, parent):
        gridlib.Grid.__init__(parent, -1)
Hallo sea-live!

So etwas nenne ich ein Durcheinander.

Die __init__-Methode eines Widgets sollte immer mit ``self`` und mit ``parent`` beginnen. Und genau so gibt man es auch weiter. Und ich kann mir nicht vorstellen, dass dieses "gridlib.Grid" anders arbeitet, auch wenn ich es nicht kenne.

Code: Alles auswählen

    def __init__(self, parent, pfad, listenname, dateiname):
        gridlib.Grid.__init__(self, parent)
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

EyDu hat geschrieben:Was schlägt denn fehl? Gibt es eine Fehlermeldung und wenn ja, welche?
Danke erst mal für die schnelle antwort

Fehlermeldung

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Python25\Meine_Programme\boerse_datum_test.py", line 248, in Tabelle_einblenden
    self.tabelle_fenster = TabelleFrame(self.pfad,self.listenname,self.dateiname)
  File "C:\Python25\Meine_Programme\boerse_datum_test.py", line 83, in __init__
    self.grid = Tabelle(self,self.pfad,self.listenname,self.dateiname)
  File "C:\Python25\Meine_Programme\boerse_datum_test.py", line 34, in __init__
    gridlib.Grid.__init__(self,parent, -1)
  File "C:\Python25\Lib\site-packages\wx-2.8-msw-unicode\wx\grid.py", line 1160, in __init__
    _grid.Grid_swiginit(self,_grid.new_Grid(*args, **kwargs))
TypeError: in method 'new_Grid', expected argument 1 of type 'wxWindow *'
Benutzeravatar
martin101986
User
Beiträge: 85
Registriert: Montag 3. Dezember 2007, 19:15
Wohnort: Steiermark, Österreich

Hallo sea-live,

dein Grid benötigt ein Fenster dass deine Tabelle beinhaltet. Der Fehler ist folgender dass du beim anlegen der Instanz der Klasse Tabelle kein parent mitgibst.

Hier gibst du beim Konstruktor als letzes Argument das parent an

Code: Alles auswählen

class Tabelle(gridlib.Grid): ##, mixins.GridAutoEditMixin):
    def __init__(self,pfad,listenname,dateiname, parent):
        gridlib.Grid.__init__(self, parent, -1)
In deiner Frame Klasse fehlt allerdings dann beim instanzieren der Tabelle das parent-Argument:

Code: Alles auswählen

#falsch
self.grid = Tabelle(self,self.pfad,self.listenname,self.dateiname)

#richtig:
self.grid = Tabelle(self,self.pfad,self.listenname,self.dateiname, parent = self)
Beachte Gerolds Eintrag zuvor wo er beschrieben hat wie eine __init__ Methode eines Widget aufgebaut sein sollte.

Grüße Martin
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

neue Fehlermeldung

Code: Alles auswählen

TypeError: __init__() got multiple values for keyword argument 'parent'
zum zeitpunkt des aufrufes sind 3x wx.Frame offen

wie kann ich diese identifizieren
Antworten