Hi,
ich hatte gerade eine Überlegung. In vielen Fällen kommt man ja um die Erzeugung von IDs für wxPython nicht herum. Ich überlege gerade ob man nicht einfach ein Paket namens GUI erstellt in dem sämtliche Module abgelegt werden die was mit der grafischen Oberfläche zu tun haben und in der __init__.py definiert man die IDs für das gesamte Paket.
Ist das sinnvoll oder spricht was dagegen?
wx IDs in __init__.py für das gesamte Paket definieren
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo burli!burli hat geschrieben:In vielen Fällen kommt man ja um die Erzeugung von IDs für wxPython nicht herum.
Dann machst du etwas falsch. Es gibt so gut wie keine Fälle, in denen noch eine ID nötig wäre. Mir fällt im Moment nur das Erzeugen von Tastaturkürzeln mit ``wx.AcceleratorTable`` ein. Und den Buttons "Abbrechen" und "OK" eines Dialogfensters, sollte man die IDs: wx.ID_CANCEL und wx.ID_OK zuweisen.
Das war's, mehr fällt mir nicht ein. Sonst brauche ich nirgends irgendeine ID und ich programmiere verdammt viel mit wxPython (täglich).
Schaue dir doch mal diese Beispiele von mir an:
- Standardfenster mit Menüs: http://www.python-forum.de/topic-5722.html
- Eigene Events verwenden: http://www.python-forum.de/topic-14587.html
Was machst du anders, dass du so viele IDs brauchst?
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Vielleicht bin ich noch nicht weit genug in die wx Welt vorgedrungen oder ich hab den Sinn der IDs immer noch nicht verstanden.
Mal ein Beispiel: ich haben einen Editor mit den Funktionen Copy, Paste, Undo usw und ich möchte die Funktionen im Menu, in der Toolbar, im Kontext Menu des Editfeldes und als Tastenkürzel verwenden. Muss ich da nicht immer die gleiche ID verwenden?
Zb AUI_DockingWindowMgr aus der wxPython Demo fängt mit einigen wx.NewId() Zuweisungen an
Mal ein Beispiel: ich haben einen Editor mit den Funktionen Copy, Paste, Undo usw und ich möchte die Funktionen im Menu, in der Toolbar, im Kontext Menu des Editfeldes und als Tastenkürzel verwenden. Muss ich da nicht immer die gleiche ID verwenden?
Zb AUI_DockingWindowMgr aus der wxPython Demo fängt mit einigen wx.NewId() Zuweisungen an
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo burli!burli hat geschrieben:Mal ein Beispiel: ich haben einen Editor mit den Funktionen Copy, Paste, Undo usw und ich möchte die Funktionen im Menu, in der Toolbar, im Kontext Menu des Editfeldes und als Tastenkürzel verwenden. Muss ich da nicht immer die gleiche ID verwenden?
Es zwingt dich niemand dazu die IDs zu verwenden. Das kannst du genau so gut auch ohne IDs erledigen.
Du hast eine Funktion die etwas erledigt. Und mit ``.Bind`` kannst du diese eine Funktion allen Elementen als Event-Handler zuweisen. Wie man in den Beispielen sieht, funktioniert das auch ohne IDs wunderbar.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Ok, aber warum definieren die in der genannten Demo fast 30 IDs am Dateianfang? Ist das nur eine überflüssige Altlast die einfach nicht überarbeitet wurde?
Ein Beispiel:
Das sind jetzt nur die Zeilen die sich auf SizeReportConten beziehen
Ein Beispiel:
Code: Alles auswählen
ID_SizeReportContent = wx.NewId()
view_menu.Append(ID_SizeReportContent, "Use a Size Reporter for the Content Pane")
self.Bind(wx.EVT_MENU, self.OnChangeContentPane, id=ID_SizeReportContent)
self._mgr.GetPane("sizereport_content").Show(event.GetId() == ID_SizeReportContent)
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo burli!burli hat geschrieben:Ok, aber warum definieren die in der genannten Demo fast 30 IDs am Dateianfang? Ist das nur eine überflüssige Altlast die einfach nicht überarbeitet wurde?
Das kann ich dir nicht sagen. Vielleicht ist es für den speziellen Anwendungsfall keine schlechte Idee, die IDs zu verwenden.
Um auf deine ursprüngliche Frage zurück zu kommen. Ich erstelle mir in meinen Projekten oft im Projekt-Hauptordner ein Modul mit dem Namen "constants.py". In größeren Projekten gibt es bei mir einen "lib"-Ordner. In diesem sind dann die für das Projekt globalen Module drinnen. Aber das hält, glaube ich, jeder so wie er es gerne möchte.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.