TAB_TRAVERSAL und Enter

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Mueck
User
Beiträge: 20
Registriert: Dienstag 16. November 2010, 02:20

Moin

Habe einen Frame mit paar TextCtrl's drin, bei denen es mich ein wenig störte, dass bei TAB genau gar nix geschah.
Stolperte dann über TAB-TRAVERSAL:

Code: Alles auswählen

class Frame( wx.Frame ) :
   def __init__( self, app, parent, id ) :
      wx.Frame.__init__( self, parent, id,
                         title = u"...",
                         pos   = wx.DefaultPosition,
                         size  = wx.DefaultSize,
                         style = wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL ) 
Nun springt's mit TAB Feld für Feld weiter.
Schön.
Fast ...
... bis ich den kleinen Nebeneffekt entdeckte, dass bei Drücken von ENTER ein Fensterchen aufpoppte, und zwar das, was im Unterprogrämmle OnAbout definiert ist, was hinter einem Menu-Eintrag steckt:

Code: Alles auswählen

      menuAbout = filemenu.Append( 1, u"&Info",
         " Information über dieses Programm".decode("iso-8859-15") )
...
      self.Bind( wx.EVT_MENU, self.OnAbout, menuAbout )
Ändere ich die 1 auf bspw. 4, dann passiert wie ehedem bei TAB nix ...

Ist das mit dem Aufpoppen ein Bug oder Feature? :wink:

Wie stellt man das ab (außer mit dem "4-Hack") oder -- noch besser -- auf einfache Art auf was sinnvolles um?
Sinnvolles = Wahlweise Weitergehen bei ENTER ins nächste Feld wie bei TAB (quasi ein ENTER_TRAVERSAL) oder drücken eines bestimmten Buttons oder irgendsowas in der Art ...
BlackJack

@Mueck: Das ist ein Bug in Deinem Programm. Sowohl 1 als auch 4 ist ein ”Hack”. Du kannst da nicht einfach so irgendwelche Zahlen nehmen. Die müssen eindeutig sein und dürfen nicht schon verwendet werden. Um das sicher zu stellen musst Du sie mit `wx.NewId()` erzeugen und nicht hart kodieren.
Mueck
User
Beiträge: 20
Registriert: Dienstag 16. November 2010, 02:20

BlackJack hat geschrieben:@Mueck: Das ist ein Bug in Deinem Programm. Sowohl 1 als auch 4 ist ein ”Hack”. Du kannst da nicht einfach so irgendwelche Zahlen nehmen. Die müssen eindeutig sein und dürfen nicht schon verwendet werden. Um das sicher zu stellen musst Du sie mit `wx.NewId()` erzeugen und nicht hart kodieren.
Ok, ist geändert. Enter tut nun nix unerwartetes mehr, sondern nix wie vorher ;-)
... womit wir beim 2. Teil der Frage sind ;-)


.oO( ... wenn ich jetzt noch wüsste, wo ich das mit 1/2/3 abgekupfert habe ... Muss irgendein Tutorial gewesen sein ... )
Antworten