Code: Alles auswählen
import wx
import sys
class ScrolledMessageDialog(wx.Dialog):
def __init__(self, parent, message, title, position = wx.DefaultPosition, size = (400, 300)):
wx.Dialog.__init__(self, parent, -1, title, position, size, wx.DEFAULT_DIALOG_STYLE | wx.MAXIMIZE_BOX | wx.THICK_FRAME | wx.RESIZE_BORDER | wx.WANTS_CHARS)
#self.ID_CLOSE = 101
self.theSizer = wx.BoxSizer(wx.VERTICAL)
self.cmdSizer = wx.BoxSizer(wx.HORIZONTAL)
self.btnClose = wx.Button(self, wx.ID_CANCEL, "Close")
self.cmdSizer.Add(self.btnClose, 0, wx.SHAPED | wx.ALIGN_CENTER)
self.btnClose.SetDefault()
self.txtMessage = wx.TextCtrl(self, -1, message, wx.DefaultPosition, wx.DefaultSize, wx.TE_MULTILINE | wx.TE_READONLY)
self.theSizer.Add(self.txtMessage, 9, wx.EXPAND)
self.theSizer.Add(wx.StaticText(self, -1, " "), 0, wx.SHAPED)
self.theSizer.Add(self.cmdSizer, 0, wx.SHAPED | wx.ALIGN_CENTER)
self.theSizer.Add(wx.StaticText(self, -1, " "), 0, wx.SHAPED)
self.SetAutoLayout(True)
self.SetSizer(self.theSizer)
self.Bind(wx.EVT_BUTTON, self.OnbtnClose, id=wx.ID_CANCEL)
self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
#whatever i want to bind to the key, it doesn't work
##self.txtMessage.Bind(wx.EVT_CHAR, self.OnChar)
self.Bind(wx.EVT_CHAR, self.OnChar)
self.Bind(wx.EVT_KEY_DOWN, self.OnChar)
self.Bind(wx.EVT_CHAR_HOOK, self.OnCharHook)
self.SetEscapeId(wx.ID_CANCEL)
#self.SetAcceleratorTable(wx.AcceleratorTable([(wx.ACCEL_NORMAL, wx.WXK_ESCAPE, wx.ID_CANCEL),]))
def OnCharHook(self, event):
print "char hook"
if event.GetKeyCode() == wx.WXK_ESCAPE:
self.EndModal(wx.ID_CANCEL)
else:
event.Skip()
def OnChar(self, event):
print "onchar"
keycode = event.GetKeyCode()
if keycode == wx.WXK_ESCAPE:
self.Close(1)
def OnbtnClose(self, event):
print "close"
self.EndModal(1)
def OnKeyDown(self, event):
print "on key down"
if event.GetKeyCode() == wx.WXK_ESCAPE:
self.Close(1)
if __name__ == '__main__':
app = wx.App()
d = ScrolledMessageDialog(None, "message", "title")
d.ShowModal()
d.Destroy()
app.MainLoop()