Einige Anfängerfragen

Plattformunabhängige GUIs mit wxWidgets.
alan
User
Beiträge: 81
Registriert: Dienstag 10. April 2007, 11:30

Einige Anfängerfragen

Beitragvon alan » Sonntag 26. August 2007, 20:58

Hallo!

Ich versuch mich jetzt schon ein paar Tage an wxPython und hätte mittlerweile einige Fragen.

1. Ich habe schon beides gesehen:
(von http://wiki.wxpython.org/index.cgi/AnotherTutorial)

Code: Alles auswählen

class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, wx.ID_ANY, 'try2.py')
        frame.Show(True)
        return True

und (aus wxPython In Action)

Code: Alles auswählen

class MyApp(wx.App):
    def OnInit(self):
        self.frame = MyFrame(None, wx.ID_ANY, 'try2.py')
        self.frame.Show(True)
        return True

D.h. wenn ich das richtig verstehe, ist frame einmal ein Klassenattribut und einmal ein Instanzattribut und das spielt eigentlich keine Rolle, solange MyApp nicht vererbt wird. Wie sollte man es machen und wieso?

2. Was macht eigentlich wx.Centre() genau?

3. Manchmal wird wx.App.SetTopWindow() gesetzt, aber bis jetzt hatte ich noch kein Beispiel, wo sich durch Weglassen irgendwas geändert hätte. Spielt das keine Rolle, solange nur ein wx.Frame/wx.MDIParentFrame/wx.MDIChildFrame/wx.Dialog/wx.PopupWindow vorkommt?

4. Hat zwar nichts mit wxPython zu tun:
Wann nimmt man 'text' her und wann "text"? Hab im Style Guide nichts gefunden.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: Einige Anfängerfragen

Beitragvon Leonidas » Sonntag 26. August 2007, 21:35

alan hat geschrieben:4. Hat zwar nichts mit wxPython zu tun:
Wann nimmt man 'text' her und wann "text"? Hab im Style Guide nichts gefunden.

Die zwei Formen sind, im Kontrast zu vielen anderen Programmiersprachen völlig identisch. Auch die Form """text""" und '''text''' ist möglich (wird insbesondere für Multi-Line-Strings verwendet), allerdings ist meinen Beobachtungen nach die erstere verbreiteter.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Re: Einige Anfängerfragen

Beitragvon BlackVivi » Sonntag 26. August 2007, 21:40

Leonidas hat geschrieben:
alan hat geschrieben:4. Hat zwar nichts mit wxPython zu tun:
Wann nimmt man 'text' her und wann "text"? Hab im Style Guide nichts gefunden.

Die zwei Formen sind, im Kontrast zu vielen anderen Programmiersprachen völlig identisch. Auch die Form """text""" und '''text''' ist möglich (wird insbesondere für Multi-Line-Strings verwendet), allerdings ist meinen Beobachtungen nach die erstere verbreiteter.
Ich verwend immer die Auszeichnung die das Gegenteil von dem Zeichen ist, dass ich im Text benutz'.

Wenn ich zum Beispiel "benutz'" schreib', schreib' ich's so... klingt dämlich, ich weiß.

Zur ersten Frage:

Würde die Variante von WxPython in Action bevorzugen, eindeutigere Kennzeichnung der Attribute.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Einige Anfängerfragen

Beitragvon gerold » Sonntag 26. August 2007, 22:28

Hallo alan!
alan hat geschrieben:

Code: Alles auswählen

class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, wx.ID_ANY, 'try2.py')

Code: Alles auswählen

class MyApp(wx.App):
    def OnInit(self):
        self.frame = MyFrame(None, wx.ID_ANY, 'try2.py')

D.h. wenn ich das richtig verstehe, ist frame einmal ein Klassenattribut und einmal ein Instanzattribut

Das stimmt so nicht.

``frame`` ist eine lokale Variable, die außerhalb der Methode (OnInit) nicht existiert.

``self.frame`` ist ein Instanzattribut. Dieses existiert nur in der Klasseninstanz. Bitte nicht mit Klassenattributen verwechseln.

Klassenattribute werden außerhalb der Klassenmethoden definiert und werden direkt über den Klassennamen angesprochen. ``MyApp.MyClassAttr``

Wenn auf ``self.MyClassAttr`` in einer Methode lesend zugegriffen wird, dann wird zuerst geprüft, ob es ein Instanzattribut mit dem Namen ``MyClassAttr`` gibt. Wenn nicht, dann wird lesend auf das Klassenattribut zugegriffen. So zusagen als Standardwert, falls das Instanzattribut nicht existiert.

alan hat geschrieben:2. Was macht eigentlich wx.Centre() genau?

Du meinst evt. http://wxwidgets.org/manuals/stable/wx_ ... ramecentre

mfg
Gerold
:-)

PS: ``wx.ID_ANY`` kannst du dir sparen. Nimm lieber ``-1``, das ist kürzer und wird sich niemals ändern.

PS2: http://www.python-forum.de/viewtopic.php?p=58772#58772
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
alan
User
Beiträge: 81
Registriert: Dienstag 10. April 2007, 11:30

Beitragvon alan » Sonntag 26. August 2007, 22:55

Vielen Dank, ihr seid großartig :)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder