import wx
class Control(wx.Control):
def __init__(self, parent):
wx.Control.__init__(self, parent)
self.Bind(wx.EVT_CHAR, self.OnKey)
self.Bind(wx.EVT_KEY_DOWN, self.OnKey)
self.Bind(wx.EVT_KEY_DOWN, self.OnKey)
self.Bind(wx.EVT_LEFT_DOWN, self.OnMouseClick)
def OnKey(self, event):
print("key pressed")
event.Skip()
def OnMouseClick(self, event):
self.SetFocus()
print("has focus")
event.Skip()
class Frame(wx.Frame):
def __init__(self, parent=None):
wx.Frame.__init__(self, parent)
panel = wx.Panel(self)
sizer = wx.BoxSizer(wx.HORIZONTAL)
radio = wx.RadioButton(panel, label="Radio button")
button = wx.Button(panel, label="Button")
control = Control(panel)
sizer.Add(radio, 0, wx.ALL, 5)
sizer.Add(button, 0, wx.ALL, 5)
sizer.Add(control, 0, wx.ALL, 5)
panel.SetSizer(sizer)
self.Show()
if __name__ == "__main__":
app = wx.App()
frame = Frame()
app.MainLoop()
Ein ziemlich minimales Beispiel.wxPython - wie man ein wx.Control davon abhält, den Fokus auf die Pfeiltaste zu verlieren?
durch Klicken auf das Steuerelement, legt den Fokus zu steuern. Auch wenn die Taste auf eine Funktion OnKey gedrückt wird, ändert eine Pfeiltaste den Fokus auf eine andere Schaltfläche/ein anderes Widget.
Gibt es ein ähnliches Verfahren wie AcceptsFocusFromKeyboard (Selbst-):
Beschreibung: Kann man das Fenster den Fokus von Tastaturnavigation gegeben werden? Wenn nicht, ist der einzige Weg, den Fokus zu setzen (vorausgesetzt, es akzeptiert ihn überhaupt), darauf zu klicken.
Außer
Entschuldigung, ich habe event.Skip() getestet, aber ich habe es versehentlich aus dem Beispiel weggelassen. Ich möchte, dass es auf das Steuerelement fokussiert bleibt, wobei die Pfeiltaste den Status des Steuerelements ändern kann. Zum Beispiel können die Pfeiltasten wie ein listctrl die Auswahl in der Liste ändern, anstatt den Fokus vom listctrl zu verlieren. – Blackboard
@Blackboard, Antwort aktualisiert. – Igor
danke, ich werde die Vorschläge versuchen, die Sie gemacht haben. Wenn es Ihnen nichts ausmacht, mich zu fragen, was ist mit dem Code (der sich nicht auf Dinge wie Leerzeichen oder Namenskonventionen bezieht), die Ihnen falsch/komisch erschienen? Ich habe viele Codebeispiele aus verschiedenen Tutorials gesehen, die auf diese Weise erstellt wurden.(obwohl ich mehr Code-Beispiele überprüfen werde) – Blackboard