本文執行個體講述了wxPython的事件驅動機制,分享給大家供大家參考。具體方法如下:
先來看看如下代碼:
#!/usr/bin/python # moveevent.py import wx #匯入wx庫 class MoveEvent(wx.Frame): def __init__(self, parent, id, title): wx.Frame.__init__(self, parent, id, title, size=(250, 180)) #視窗大小為(250, 180) wx.StaticText(self, -1, 'x:', (10,10))#parent, id, title, point wx.StaticText(self, -1, 'y:', (10,30)) self.st1 = wx.StaticText(self, -1, '', (30, 10)) self.st2 = wx.StaticText(self, -1, '', (30, 30)) self.Bind(wx.EVT_MOVE, self.OnMove) #綁定Frame的move事件 self.Centre() self.Show(True) def OnMove(self, event): x, y = event.GetPosition() self.st1.SetLabel(str(x)) self.st2.SetLabel(str(y)) app = wx.App()#產生應用程式 MoveEvent(None, -1, 'move event')#調用自己的類,三個參數為:parent, id , title app.MainLoop()#應用程式事件迴圈
程式運行效果如所示:
wxStaticText的兩個建構函式官方文檔如下:
wxStaticText ()
Default constructor.
wxStaticText (wxWindow *parent, wxWindowID id, const wxString &label, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0, const wxString&name=wxStaticTextNameStr)
Constructor, creating and showing a text control.
The event parameter in the OnMove() method is an object specific to a particular event type. In our case it is the instance of a wx.MoveEvent class. This object holds information about the event. For example the Event object or the position of the window. In our case the Event object is the wx.Frame widget. We can find out the current position by calling the GetPosition() method of the event.
OnMove()方法中的event參數是一種特殊的事件類型,在我們的例子中,它是wx.MoveEvnet類的一個執行個體.這個對象儲存了事件的一些資訊,比如這個事件對象或者視窗的位置.在我們例子中事件對象是一個wx.Frame控制項.我們可以通過呼叫事件對象的GetPosition()得到當前位置資訊.
Vetoing events
Sometimes we need to stop processing an event. To do this, we call the method Veto().
#!/usr/bin/python # veto.py import wx class Veto(wx.Frame): def __init__(self, parent, id, title): wx.Frame.__init__(self, parent, id, title, size=(250, 200)) self.Bind(wx.EVT_CLOSE, self.OnClose) self.Centre() self.Show(True) def OnClose(self, event): dial = wx.MessageDialog(None, 'Are you sure to quit?', 'Question', wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION) ret = dial.ShowModal() if ret == wx.ID_YES: self.Destroy() else: event.Veto() app = wx.App() Veto(None, -1, 'Veto') app.MainLoop()
希望本文所述對大家的Python程式設計有所協助。