|
@@ -0,0 +1,124 @@
|
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
|
+
|
|
|
|
+import wx
|
|
|
|
+import win32api
|
|
|
|
+import sys, os
|
|
|
|
+
|
|
|
|
+APP_TITLE = u'控件事件、鼠标事件、键盘事件、系统事件'
|
|
|
|
+APP_ICON = 'res/python.ico'
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class mainFrame(wx.Frame):
|
|
|
|
+ '''程序主窗口类,继承自wx.Frame'''
|
|
|
|
+
|
|
|
|
+ def __init__(self, parent):
|
|
|
|
+ '''构造函数'''
|
|
|
|
+
|
|
|
|
+ wx.Frame.__init__(self, parent, -1, APP_TITLE)
|
|
|
|
+ self.SetBackgroundColour(wx.Colour(224, 224, 224))
|
|
|
|
+ self.SetSize((520, 220))
|
|
|
|
+ self.Center()
|
|
|
|
+
|
|
|
|
+ if hasattr(sys, "frozen") and getattr(sys, "frozen") == "windows_exe":
|
|
|
|
+ exeName = win32api.GetModuleFileName(win32api.GetModuleHandle(None))
|
|
|
|
+ icon = wx.Icon(exeName, wx.BITMAP_TYPE_ICO)
|
|
|
|
+ else:
|
|
|
|
+ icon = wx.Icon(APP_ICON, wx.BITMAP_TYPE_ICO)
|
|
|
|
+ self.SetIcon(icon)
|
|
|
|
+
|
|
|
|
+ wx.StaticText(self, -1, u'第一行输入框:', pos=(40, 50), size=(100, -1), style=wx.ALIGN_RIGHT)
|
|
|
|
+ wx.StaticText(self, -1, u'第二行输入框:', pos=(40, 80), size=(100, -1), style=wx.ALIGN_RIGHT)
|
|
|
|
+ self.tip = wx.StaticText(self, -1, u'', pos=(145, 110), size=(150, -1), style=wx.ST_NO_AUTORESIZE)
|
|
|
|
+
|
|
|
|
+ self.tc1 = wx.TextCtrl(self, -1, '', pos=(145, 50), size=(150, -1), name='TC01', style=wx.TE_CENTER)
|
|
|
|
+ self.tc2 = wx.TextCtrl(self, -1, '', pos=(145, 80), size=(150, -1), name='TC02',
|
|
|
|
+ style=wx.TE_PASSWORD | wx.ALIGN_RIGHT)
|
|
|
|
+
|
|
|
|
+ btn_mea = wx.Button(self, -1, u'鼠标左键事件', pos=(350, 50), size=(100, 25))
|
|
|
|
+ btn_meb = wx.Button(self, -1, u'鼠标所有事件', pos=(350, 80), size=(100, 25))
|
|
|
|
+ btn_close = wx.Button(self, -1, u'关闭窗口', pos=(350, 110), size=(100, 25))
|
|
|
|
+
|
|
|
|
+ # 控件事件
|
|
|
|
+ self.tc1.Bind(wx.EVT_TEXT, self.EvtText)
|
|
|
|
+ self.tc2.Bind(wx.EVT_TEXT, self.EvtText)
|
|
|
|
+ self.Bind(wx.EVT_BUTTON, self.OnClose, btn_close)
|
|
|
|
+
|
|
|
|
+ # 鼠标事件
|
|
|
|
+ btn_mea.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
|
|
|
|
+ btn_mea.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
|
|
|
|
+ btn_mea.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel)
|
|
|
|
+ btn_meb.Bind(wx.EVT_MOUSE_EVENTS, self.OnMouse)
|
|
|
|
+
|
|
|
|
+ # 键盘事件
|
|
|
|
+ self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
|
|
|
|
+
|
|
|
|
+ # 系统事件
|
|
|
|
+ self.Bind(wx.EVT_CLOSE, self.OnClose)
|
|
|
|
+ self.Bind(wx.EVT_SIZE, self.On_size)
|
|
|
|
+ # self.Bind(wx.EVT_PAINT, self.On_paint)
|
|
|
|
+ # self.Bind(wx.EVT_ERASE_BACKGROUND, lambda event: None)
|
|
|
|
+
|
|
|
|
+ def EvtText(self, evt):
|
|
|
|
+ '''输入框事件函数'''
|
|
|
|
+
|
|
|
|
+ obj = evt.GetEventObject()
|
|
|
|
+ objName = obj.GetName()
|
|
|
|
+ text = evt.GetString()
|
|
|
|
+
|
|
|
|
+ if objName == 'TC01':
|
|
|
|
+ self.tc2.SetValue(text)
|
|
|
|
+ elif objName == 'TC02':
|
|
|
|
+ self.tc1.SetValue(text)
|
|
|
|
+
|
|
|
|
+ def On_size(self, evt):
|
|
|
|
+ '''改变窗口大小事件函数'''
|
|
|
|
+
|
|
|
|
+ self.Refresh()
|
|
|
|
+ evt.Skip() # 体会作用
|
|
|
|
+
|
|
|
|
+ def OnClose(self, evt):
|
|
|
|
+ '''关闭窗口事件函数'''
|
|
|
|
+
|
|
|
|
+ dlg = wx.MessageDialog(None, u'确定要关闭本窗口?', u'操作提示', wx.YES_NO | wx.ICON_QUESTION)
|
|
|
|
+ if (dlg.ShowModal() == wx.ID_YES):
|
|
|
|
+ self.Destroy()
|
|
|
|
+
|
|
|
|
+ def OnLeftDown(self, evt):
|
|
|
|
+ '''左键按下事件函数'''
|
|
|
|
+
|
|
|
|
+ self.tip.SetLabel(u'左键按下')
|
|
|
|
+
|
|
|
|
+ def OnLeftUp(self, evt):
|
|
|
|
+ '''左键弹起事件函数'''
|
|
|
|
+
|
|
|
|
+ self.tip.SetLabel(u'左键弹起')
|
|
|
|
+
|
|
|
|
+ def OnMouseWheel(self, evt):
|
|
|
|
+ '''鼠标滚轮事件函数'''
|
|
|
|
+
|
|
|
|
+ vector = evt.GetWheelRotation()
|
|
|
|
+ self.tip.SetLabel(str(vector))
|
|
|
|
+
|
|
|
|
+ def OnMouse(self, evt):
|
|
|
|
+ '''鼠标事件函数'''
|
|
|
|
+
|
|
|
|
+ self.tip.SetLabel(str(evt.EventType))
|
|
|
|
+
|
|
|
|
+ def OnKeyDown(self, evt):
|
|
|
|
+ '''键盘事件函数'''
|
|
|
|
+
|
|
|
|
+ key = evt.GetKeyCode()
|
|
|
|
+ self.tip.SetLabel(str(key))
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class mainApp(wx.App):
|
|
|
|
+ def OnInit(self):
|
|
|
|
+ self.SetAppName(APP_TITLE)
|
|
|
|
+ self.Frame = mainFrame(None)
|
|
|
|
+ self.Frame.Show()
|
|
|
|
+ return True
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+if __name__ == "__main__":
|
|
|
|
+ app = mainApp()
|
|
|
|
+ app.MainLoop()
|