Seite 1 von 1

Pfeiltasten lösen kein Key-Event aus

Verfasst: Montag 30. März 2009, 19:06
von Cobra5
Hallo zusammen,

wie ich schon geschrieben habe, habe ich ein Problem mit Key-Events.
Ich starte folgendes Programm:

Code: Alles auswählen

# keyevent.py

import wx

class KeyEvent(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title)

        panel = wx.Panel(self, -1)
        panel.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
        panel.SetFocus()

        self.Centre()
        self.Show(True)


    def OnKeyDown(self, event):
        keycode = event.GetKeyCode()
        print keycode


app = wx.PySimpleApp()
KeyEvent(None, -1, 'keyevent.py')
app.MainLoop()
Benutze ich die Pfeiltasten, erscheint keine Ausgabe. Mit den anderen Tasten gibt es kein Problem. (Auagabe erscheint) Jemand eine Idee, woher das Problem stammt?
Meine Versionen: Python Version 2.5.1 | wx.Python 2.8 (falls die Angaben helfen).

Danke im Voraus

Cobra5

Re: Pfeiltasten lösen kein Key-Event aus

Verfasst: Dienstag 31. März 2009, 06:46
von gerold
Cobra5 hat geschrieben:Benutze ich die Pfeiltasten, erscheint keine Ausgabe.
Hallo Cobra5!

Aus der wxWidgets-Hilfe zu "wxPanel": :-)
Note: if not all characters are being intercepted by your OnKeyDown or OnChar handler, it may be because you are using the wxTAB_TRAVERSAL style, which grabs some keypresses for use by child controls.

Code: Alles auswählen

#!/usr/bin/env python
#coding: iso-8859-15

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()
mfg
Gerold
:-)

Verfasst: Dienstag 31. März 2009, 16:51
von Cobra5
Das war die Lösung :D

Vielen Dank

Gruß Cobra5