Key Event geht verloren?
Verfasst: Donnerstag 16. September 2010, 15:22
Hallo,
im folgenden Quelltext soll der Handler "OnKeyDown()" bei Tastendruck aufgerufen werden
und wenn es Enter ist das angezeigt werden (auf stdout)
Aber irgendwo geht der Event verloren oder so....
Gruß
joh
im folgenden Quelltext soll der Handler "OnKeyDown()" bei Tastendruck aufgerufen werden
und wenn es Enter ist das angezeigt werden (auf stdout)
Code: Alles auswählen
# -*- coding: cp1252 -*-
import wx
class SFrame(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, -1, title, size=(800,500),style= wx.CLOSE_BOX |
wx.SYSTEM_MENU |
wx.CAPTION |
wx.SIMPLE_BORDER |
wx.MINIMIZE_BOX)
#---------------menu----------------------------------------------------
menuBar1 = wx.MenuBar()
filemenu = wx.Menu()
# add the items to the filemenu, using \tKeyName automatically creates an accelerator
filemenu.Append(wx.ID_EXIT, "E&xit\tAlt-X", "Hilfetext1 in statusbar")
fo=filemenu.Append(-1, "&Open file\tAlt-O", "Hilfetext2 in statusbar")
# filemenu, menubar, statusbar
menuBar1.Append(filemenu, "&File")
self.SetMenuBar(menuBar1)
self.CreateStatusBar()
self.text10 = wx.TextCtrl(self, -1, '', size=(200, 20))
#---------------Buttons-------------------------------------------------
close_btn = wx.Button(self, -1, "Close")
other_btn = wx.Button(self, -1, "other fnct.")
#---------------sizers--------------------------------------------------
self.sizerb=wx.BoxSizer(wx.HORIZONTAL)
self.sizerSp1=wx.BoxSizer(wx.HORIZONTAL)
self.sizerSp2=wx.BoxSizer(wx.HORIZONTAL)
self.sizerSp3=wx.BoxSizer(wx.HORIZONTAL)
#all 4 sizers together in a vbox-sizer:
self.sizer0=wx.BoxSizer(wx.VERTICAL)
self.sizerb.Add((20,20))
self.sizerb.Add(close_btn) #add buttonleiste
self.sizerb.Add((20,20))
self.sizerb.Add(other_btn)
self.sizer0.Add(self.sizerb) #add sizer buttonleiste
self.sizer0.Add((20,20)) #space-line
self.sizer0.Add(self.sizerSp1)
self.sizer0.Add((20,20)) #space-line
self.sizer0.Add(self.sizerSp2)
self.sizer0.Add((20,20)) #space-line
self.sizer0.Add(self.sizerSp3)
self.sizer0.Add((20,20)) #space-line
self.SetSizer(self.sizer0)
self.sizerSp1.Add((20,20))
txt1 = wx.StaticText(self, -1, "xx1: ")
txt1.SetFont(wx.Font(24, wx.SWISS, wx.NORMAL, wx.BOLD))
self.sizerSp1.Add(txt1)
self.sizerSp1.Add((20,20))
self.sizerSp1.Add(self.text10)
self.Fit()
self.Centre()
#--------------- bindings ----------------------------------------------
self.Bind(wx.EVT_BUTTON, self.OnTimeToClose, close_btn)
self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.text10)
self.Bind(wx.EVT_MENU, self.OnTimeToClose, id=wx.ID_EXIT)
#----------------event handlers:----------------------------------------------
def OnSelect(self, event):
print event.GetSelection()
def OnTimeToClose(self, evt):
"""called when close-button is clicked or exit is choosen"""
self.Close()
def OnKeyDown(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_RETURN:
print 'ET'
event.Skip()
#---------------main-------------------------------------------------
class SApp(wx.App):
def OnInit(self):
frame = SFrame(None, 'Test')
self.SetTopWindow(frame)
print "stdout window: "
frame.Show(True)
return True
if __name__ == '__main__':
app = SApp(redirect = False) #stdio will stay at the console...
print 'mainloop entered'
app.MainLoop()
Gruß
joh