Seite 1 von 1

Einige Anfängerfragen

Verfasst: Sonntag 26. August 2007, 20:58
von alan
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.

Re: Einige Anfängerfragen

Verfasst: Sonntag 26. August 2007, 21:35
von Leonidas
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.

Re: Einige Anfängerfragen

Verfasst: Sonntag 26. August 2007, 21:40
von BlackVivi
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.

Re: Einige Anfängerfragen

Verfasst: Sonntag 26. August 2007, 22:28
von gerold
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

Verfasst: Sonntag 26. August 2007, 22:55
von alan
Vielen Dank, ihr seid großartig :)