Einige Anfängerfragen

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

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

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: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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

Vielen Dank, ihr seid großartig :)
Antworten