Hallo Francesco,
erstmal danke fürs antworten.
Sorry das ich mich so unverständlich ausgedrückt habe. Ich möchte nicht von einem Frame zum anderem springen, sondern von einem TextControl zum nächsten. z.B. vom Eingabefeld für den Vornamen zum Eingabefeld für den Nachnamen und nach dem letztem Eingafeld möchte ich, dass der Focus auf den OK Button bewegt wird und bei einem weiterem Druck auf Tab soll es zum Cancel Button weitergehen. Hoffe, dass mein Vorhaben nun ein wenig verständlicher geworden ist, wenn nicht bitte nochmal bescheid sagen.
Ich wundere mich das diese Funktion in Python nicht Standart ist, denn in Windows ist der Felderwechsel mittels Tab doch eigentlich immer möglich? Kann es sein, dass man vielleicht die Aktivierungsreihenfolge so wie unter VB irgendwo festlegen muß?
Hallo Montecore
natürlich sollte es Standard sein, und es ist auch so, wie Du beschrieben
hast.
Nach der Reihenfolge, wie Du die Controls angelegt hast, nach der richtet
sich dann die "Tab Order".
Ich habe das Beispiel geändert (kein Sash Window und kein Button)
und mit tab kommt man da weiter,
Eigenartigerweise, wenn der Button mit dabei ist, kommt man nach dem
dritten mal tab, nicht mehr auf das erste Feld zurück.
Ich glaube, da könnte man in der wxPython-user mailing List
mal eine Frage reinstellen, oder weiss sonst wer Bescheid?
BTW: der "Gast" oben war auch ich, wieder vergessen, Benutzername anzugeben.
Code: Alles auswählen
import wx
#---------------------------------------------------------------------------
class TestSashWindow(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1)
self.remainingSpace = wx.Panel(self, -1, style=wx.SUNKEN_BORDER)
self.Bind(wx.EVT_SIZE, self.OnSize)
textWindow = wx.TextCtrl(
self.remainingSpace, -1, "", wx.DefaultPosition, wx.DefaultSize,
wx.TE_MULTILINE|wx.SUNKEN_BORDER
)
textWindow2 = wx.TextCtrl(
self.remainingSpace, -1, "", (0, 200), wx.DefaultSize,
wx.TE_MULTILINE|wx.SUNKEN_BORDER
)
# btn = wx.Button(
# self.remainingSpace, -1, "test", (0, 350), wx.DefaultSize,
# wx.TE_MULTILINE|wx.SUNKEN_BORDER
# )
textWindow.SetValue("A sub window")
def OnSize(self, event):
wx.LayoutAlgorithm().LayoutWindow(self, self.remainingSpace)
#---------------------------------------------------------------------------
def runTest(nb):
win = TestSashWindow(nb)
return win
class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition, wx.DefaultSize, wx.DEFAULT_DIALOG_STYLE | wx.MAXIMIZE_BOX | wx.THICK_FRAME | wx.RESIZE_BORDER)
runTest (self)
class DrApp(wx.App):
def OnInit(self):
frame = MyFrame(None, 101, "MyFrame")
frame.Show(True)
self.SetTopWindow(frame)
return True
if __name__ == '__main__':
app = DrApp(0)
app.MainLoop()