Tastatur-Ereignisse abfangen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo wxPython-Freunde

Ich habe hier ein kleines wxPython-Skript mit dem ich Tastaturaktionen abfangen möchte:

Code: Alles auswählen

# coding: UTF-8

"""Einfache wxPython-Applikation"""

import wx

def OnKeyDown(event):
    print 'Key-Down'

def OnKeyUp(event):
    print 'Key-Up'

app = wx.PySimpleApp()
frame = wx.Frame(None, -1, "PySimpleApp")

frame.Bind(wx.EVT_KEY_DOWN, OnKeyDown)
frame.Bind(wx.EVT_KEY_UP, OnKeyUp)

#app.Bind(wx.EVT_KEY_DOWN, OnKeyDown)
#app.Bind(wx.EVT_KEY_UP, OnKeyUp)

frame.Show(True)

app.MainLoop()
Die Funktionen OnKeyDown bzw. OnKeyUp werden aber nicht angesprungen, wenn ich Tasten betätige. Was könnte das sein?

P.S. Arbeite mit Linux SuSE 11.0

Gruss wuf :wink:
Take it easy Mates!
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

..... So scheint die Sache zu funktionieren:

Code: Alles auswählen

#!/usr/bin/env python
# coding: UTF-8

# Skriptname: wx_py_simple_01_03.py (wuf)

"""Einfache wxPython-Applikation"""

import wx

class MyFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, -1, "PySimpleApp")

        self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
        self.Bind(wx.EVT_KEY_UP, self.OnKeyUp)

        self.SetFocus()
        self.Show()

    def OnKeyDown(self, event):
        print 'Key-Down'

    def OnKeyUp(self, event):
        print 'Key-Up'

App = wx.PySimpleApp()
frame = MyFrame()
App.MainLoop()
Nachtrag: Nein so funktioniert es nicht !!!

Gruss wuf :wink:
Take it easy Mates!
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

.... Nur wenn ich ein Panel-Objekt zum Frame hinzufüge und die Tasttatur-Ereignisse an das Panel-Objekt binde funktioniert es:

Code: Alles auswählen

#!/usr/bin/env python
# coding: UTF-8

# Skriptname: wx_py_simple_01_01.py (wuf)

"""Einfache wxPython-Applikation"""

import wx

def OnKeyDown(event):
    print 'Key-Down'

def OnKeyUp(event):
    print 'Key-Up'

app = wx.PySimpleApp()
frame = wx.Frame(None, -1, "PySimpleApp")

panel = wx.Panel(parent=frame)
panel.Bind(wx.EVT_KEY_DOWN, OnKeyDown)
panel.Bind(wx.EVT_KEY_UP, OnKeyUp)
panel.SetFocus()

frame.Show()

app.MainLoop()

Gruss wuf :wink:
Take it easy Mates!
Antworten