2010年10月22日 星期五

wxPython 筆記 ( event 01 )

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import wx

class MyApp(wx.App):
    def OnInit(self):
        frame=MyFrame(title=u"視窗",pos=(100,150),size=(250,200))
        frame.Show()
        self.SetTopWindow(frame)
        return True


class MyFrame(wx.Frame):
    def __init__(self,title,pos,size):
        wx.Frame.__init__(self,None,-1,title,pos,size) # 備用,使用取代 frame 的 OnInit()

        #建立panel
        panel=wx.Panel(self)
        #新增一個按鈕並把它加到panel裡面
        button=wx.Button(panel,label=u"按鍵_1",pos=(25,25),size=(80,50))
        #新增另一個按鈕並把它加到panel裡面
        button_2=wx.Button(panel,label=u"按鍵_2",pos=(25,100),size=(80,50))

        # 建立事件監聽 #############################################################

        # 攔截「右上角 x 之視窗關閉鍵   wx.EVT_CLOSE」,轉向 OnCloseWin,得 :確定要關閉程式
        self.Bind(wx.EVT_CLOSE,self.OnCloseWin)

        #攔截「按 button 鍵   wx.EVT_BUTTON 」,轉向 OnClick ,得出 : 你按了 '按鍵1'
        self.Bind(wx.EVT_BUTTON,self.OnClick_1,button)

        #攔截「按 button 鍵   wx.EVT_BUTTON 」,轉向 OnClick ,得出 : 你按了 '按鍵1'
        self.Bind(wx.EVT_BUTTON,self.OnClick_2,button_2)

    #定義按鈕案下的函數  
    def OnClick_1(self,event):
        wx.MessageBox(u"你按了 '按鍵_1' ",u"提示訊息")

    def OnClick_2(self,event):
        wx.MessageBox(u"你按了 '按鍵_2' ",u"提示訊息")
      
    #定義按下關閉視窗(右上X)的函數
    def OnCloseWin(self,event):
        dlg=wx.MessageDialog(None,u"確定要關閉程式?",u"提示訊息",wx.YES_NO)
      
        #按下YES才會關閉視窗
        if dlg.ShowModal()==wx.ID_YES:
            self.Destroy()


if __name__=="__main__":
    app = MyApp()
    app.MainLoop()

沒有留言: