- 概述
在我们的程序中,完成相应的点击,移动或者其他操作中最重要的一项就是事件处理。
学习一套新的图形库就需要我们对其页面设计,事件处理非常熟悉。 - wxPython事件处理过程
wxpython也是通过对事件的绑定来实现事件的响应,通过其bind函数将控件和事件绑定再一起。例如:
#事件绑定 self.m_button1.Bind(wx.EVT_BUTTON, self.ButtonClicked)
m_button1通过与事件绑定,点击后会产生wx.EVT_BUTTON,通过调用.ButtonClicked来实现对事件的响应。 - 完整实例
通过wxPython,点击按钮后会产生一个新的窗口:
class MyFrame1(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition,
size=wx.Size(500, 300), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)
bSizer2 = wx.BoxSizer(wx.VERTICAL)
self.m_button1 = wx.Button(self, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0)
bSizer2.Add(self.m_button1, 0, wx.ALL, 5)
self.SetSizer(bSizer2)
self.Layout()
self.Centre(wx.BOTH)
# Connect Events
#事件绑定
self.m_button1.Bind(wx.EVT_BUTTON, self.ButtonClicked)
def __del__(self):
pass
# Virtual event handlers, overide them in your derived class
def ButtonClicked(self, event):
event.Skip()
#另一个类去继承MyFrame
class Test(MyFrame1):
def __init__(self, parent):
super(Test, self).__init__(parent)
pass
def __del__(self):
pass
def ButtonClicked(self, event):
dlg = wx.Dialog(None, wx.ID_ANY, "点击窗口")
dlg.Show()
pass
if __name__ == "__main__":
app = wx.App()
window = Test(None)
window.Show(True)
app.MainLoop()
pass
- 运行结果