(gelöst)wxKeyEvent funktioniert nicht mit Button ...
Verfasst: Sonntag 22. November 2009, 12:39
Hallo liebe Community,
Ich habe ein Problem mit dem EVT_KEY_DOWN Event. Im Forum habe ich dieses Beispiel gefunden, welches auch super werkelt. Wenn ich jedoch einen Button auf das Panel lege, funktioniert es nicht mehr. Kann mir jemand erklären warum oder ob ich etwas falsch mache?
Funktionierendes Beispiel von gerold:
Jetzt mein Verändertes Beispiel:
Ich habe ein Problem mit dem EVT_KEY_DOWN Event. Im Forum habe ich dieses Beispiel gefunden, welches auch super werkelt. Wenn ich jedoch einen Button auf das Panel lege, funktioniert es nicht mehr. Kann mir jemand erklären warum oder ob ich etwas falsch mache?
Funktionierendes Beispiel von gerold:
Code: Alles auswählen
import wx
wx.SetDefaultPyEncoding("iso-8859-15")
class MyFrame(wx.Frame):
def __init__(
self, parent = None, title = "Example", size = wx.Size(550, 420)
):
wx.Frame.__init__(self, parent, -1, title, size = size)
# Standard-Style für das Panel ist ``wx.TAB_TRAVERSAL | wx.NO_BORDER``
# Stattdessen wird hier nur ``wx.NO_BORDER`` verwendet
panel = wx.Panel(self, style = wx.NO_BORDER)
panel.Bind(wx.EVT_KEY_DOWN, self.on_panel_key_down)
def on_panel_key_down(self, event):
print event.GetKeyCode()
event.Skip()
def main():
app = wx.PySimpleApp()
f = MyFrame()
f.Center()
f.Show()
app.MainLoop()
if __name__ == "__main__":
main()
Code: Alles auswählen
import wx
wx.SetDefaultPyEncoding("iso-8859-15")
class MyFrame(wx.Frame):
def __init__(
self, parent = None, title = "Example", size = wx.Size(550, 420)
):
wx.Frame.__init__(self, parent, -1, title, size = size)
# Standard-Style für das Panel ist ``wx.TAB_TRAVERSAL | wx.NO_BORDER``
# Stattdessen wird hier nur ``wx.NO_BORDER`` verwendet
panel = wx.Panel(self, style = wx.NO_BORDER)
panel.Bind(wx.EVT_KEY_DOWN, self.on_panel_key_down)
self.b_button = wx.Button(panel, label='Test!', pos=(50, 50))
def on_panel_key_down(self, event):
if event.GetKeyCode()== wx.WXK_F5:
print "F5 was pressed!"
event.Skip()
def main():
app = wx.PySimpleApp()
f = MyFrame()
f.Center()
f.Show()
app.MainLoop()
if __name__ == "__main__":
main()