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