Pfeiltasten lösen kein Key-Event aus

Plattformunabhängige GUIs mit wxWidgets.
Cobra5
User
Beiträge: 22
Registriert: Sonntag 25. Mai 2008, 10:44

Pfeiltasten lösen kein Key-Event aus

Beitragvon Cobra5 » Montag 30. März 2009, 19:06

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
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Pfeiltasten lösen kein Key-Event aus

Beitragvon gerold » Dienstag 31. März 2009, 06:46

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Cobra5
User
Beiträge: 22
Registriert: Sonntag 25. Mai 2008, 10:44

Beitragvon Cobra5 » Dienstag 31. März 2009, 16:51

Das war die Lösung :D

Vielen Dank

Gruß Cobra5

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder