Hallo,
ich habe eine wxPython GUI erstellt und möchte nun zwischen den einzelnen Komponenten mittels der TAB-Taste hin und her wechseln. Allerdings habe ich überhaupt keine Ahnung, wie das funktionieren soll?
Gibt es dafür Implementierungen, die per style=... eingebunden werden können, oder muss man dazu einen Key-Event programmieren, den man dann selbst auswerten muss?
Code ausgelagert: http://paste.pocoo.org/show/11281/
Vielen Dank für eure Informationen - ich bin absoluter wx-Neuling und daher immer für "dumme" Fragen zu haben
Also wie gesagt - vielen Dank schonmal
GALDO
Edit by Gerold: Code ausgelagert
Problem mit Tabulatoren
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo galdo!
Willkommen im Python-Forum!
Du musst deine Widgets in ein Panel legen. Das Panel kümmert sich dann automatisch darum, dass du mit Tab von einem zum nächsten Widget springen kannst.
mfg
Gerold
Willkommen im Python-Forum!
Du musst deine Widgets in ein Panel legen. Das Panel kümmert sich dann automatisch darum, dass du mit Tab von einem zum nächsten Widget springen kannst.
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.
Danke für den Tipp,
auf meinem Mac, auf dem ich entwickle funktioniert das ganze auch so - allerdings nicht auf dem Windowsrechner - Ich habe dort sämtliche Komponenten auf das Panel gelegt, aber a) es sieht irgendwie fehlerhaft aus, und b) funktioniert es nicht
Noch eine Idee?
Vielen Dank schonmal und auch danke für die herzliche Aufnahme in dem Forum
Galdo
PS:
Hier zum Vergleich die Mac und die Win-Version! Was micht stört ist v.a. die Tatsache, dass unter Windows die Borders nicht SUNKEN sind und natürlich das der TAB nicht geht
auf meinem Mac, auf dem ich entwickle funktioniert das ganze auch so - allerdings nicht auf dem Windowsrechner - Ich habe dort sämtliche Komponenten auf das Panel gelegt, aber a) es sieht irgendwie fehlerhaft aus, und b) funktioniert es nicht
Code: Alles auswählen
btConvert = wx.Button(panel, 0, getLanguage('_convert:'), wx.Point(230,170), wx.Size(100,20))
btExit = wx.Button(panel, 0, getLanguage('_exit:'), wx.Point(230, 200), wx.Size(100, 20))
txtSource = wx.TextCtrl(panel,-1,'', pos=wx.Point(120,48), size=wx.Size (210,20), style=wx.TAB_TRAVERSAL)
txtDest = wx.TextCtrl(panel,-1,'', pos=wx.Point(120,78), size=wx.Size (210,20), style=wx.TAB_TRAVERSAL)
image_earth = wx.Image("earth_win.png",wx.BITMAP_TYPE_PNG)
back = wx.StaticBitmap(panel, bitmap=wx.BitmapFromImage(image_earth), pos=wx.Point(0,-5))
back.SetBackgroundColour(panel.GetBackgroundColour())
Vielen Dank schonmal und auch danke für die herzliche Aufnahme in dem Forum
Galdo
PS:
Hier zum Vergleich die Mac und die Win-Version! Was micht stört ist v.a. die Tatsache, dass unter Windows die Borders nicht SUNKEN sind und natürlich das der TAB nicht geht
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Galdo!galdo hat geschrieben:Code: Alles auswählen
txtSource = wx.TextCtrl(panel,-1,'', pos=wx.Point(120,48), size=wx.Size (210,20), style=wx.TAB_TRAVERSAL)
``style = wx.BORDER_SUNKEN`` sollte funktionieren.
``wx.TAB_TRAVERSAL`` kann Schwierigkeiten machen. Brauchst du es wirklich?
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.
BORDER_SUNKEN hab ich schon ausprobiert - hängt wohl irgendwie mit dem Bild zusammen
TAB_TRAVERSAL hab ich schon raußgenommen. Dachte, dass wäre Voraussetzung für die Steuerung mittels TAB-Taste!
Die Borders sind übrigens Sunken, wenn ich das Bild nicht dazu packe - dann ist alles OK, aber das Bild legt sich scheinbar irgendwie über die TextCtrls - kann man irgendwo sagen, dass das Bild ganz unten stehen soll, sprich also Hintergrund direkt auf dem Panel liegt?
Danke Galdo
PS: Die Buttons werden übrigens in der Win-Version nur angezeigt, wenn ich diese auf dem Hintergrundbild (= Image) plaziere.
TAB_TRAVERSAL hab ich schon raußgenommen. Dachte, dass wäre Voraussetzung für die Steuerung mittels TAB-Taste!
Die Borders sind übrigens Sunken, wenn ich das Bild nicht dazu packe - dann ist alles OK, aber das Bild legt sich scheinbar irgendwie über die TextCtrls - kann man irgendwo sagen, dass das Bild ganz unten stehen soll, sprich also Hintergrund direkt auf dem Panel liegt?
Danke Galdo
PS: Die Buttons werden übrigens in der Win-Version nur angezeigt, wenn ich diese auf dem Hintergrundbild (= Image) plaziere.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Galdo!
Das hatte ich vorher nicht bemerkt. Du legst Widgets über das Bild.
``wx.StaticBitmap`` ist kein Container. Du darfst nichts über das Bild legen.
Wenn du ein Hintergrundbild haben möchtest, dann zeichne das Bild auf das Panel.
--> http://paste.pocoo.org/show/11283/
mfg
Gerold
Das hatte ich vorher nicht bemerkt. Du legst Widgets über das Bild.
``wx.StaticBitmap`` ist kein Container. Du darfst nichts über das Bild legen.
Wenn du ein Hintergrundbild haben möchtest, dann zeichne das Bild auf das Panel.
--> http://paste.pocoo.org/show/11283/
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.
Vielen Dank für deine bisherigen Antworten - ich habe aber leider immer noch ein Problem. Folgenden Code verwende ich zur Zeit:
Allerdings wird das Bild immer noch nicht angezeigt. Muss ich das dc nicht noch irgendwie dem Panel anhängen?
Danke nochmals
Galdo
Code: Alles auswählen
panel = wx.Panel(self)
self.bmp = wx.Bitmap("earth_win.jpg")
self.Bind(wx.EVT_PAINT,self.OnPaint)
Code: Alles auswählen
def OnPaint(self,evt):
dc = wx.BufferedPaintDC(self, self.bmp)
Danke nochmals
Galdo
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Galdo!galdo hat geschrieben:Allerdings wird das Bild immer noch nicht angezeigt. Muss ich das dc nicht noch irgendwie dem Panel anhängen?
Code: Alles auswählen
self.panel = wx.Panel(self)
self.bmp = wx.Bitmap("earth_win.jpg")
self.panel.Bind(wx.EVT_PAINT, self.OnPanelPaint)
Code: Alles auswählen
def OnPanelPaint(self,evt):
dc = wx.BufferedPaintDC(self.panel, self.bmp)
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.
Vielen Dank für die Schnippsel - die haben zwar nicht ganz funktioniert, haben mich allerdings auf die richtige Spur gebracht
Das Problem ist aber, dass aus irgendeinem Grund die Performance, wie das Fenster gezeichnet wird extremst einbricht, so dass das Programm nicht mehr verwendbar ist
Ich habs jetzt aufgegeben und verzichte in der Windows Version auf Tabs - is zwar schade, aber nicht sooo wichtig!
Vielen Dank dir auf jeden Fall - hast mir trotzdem sehr geholfen...
Galdo
Das Problem ist aber, dass aus irgendeinem Grund die Performance, wie das Fenster gezeichnet wird extremst einbricht, so dass das Programm nicht mehr verwendbar ist
Ich habs jetzt aufgegeben und verzichte in der Windows Version auf Tabs - is zwar schade, aber nicht sooo wichtig!
Vielen Dank dir auf jeden Fall - hast mir trotzdem sehr geholfen...
Galdo