1. 程式人生 > >python的視窗事件(六)

python的視窗事件(六)

下面是針對上次視窗,新增相應的事件。

元件要繫結一個事件函式,才能讓元件起作用。如openbutton是一個按鈕元件,openfile是一個函式,EVT_BUTTON是一個事件,這一可以通過Bind,把元件和事件函式聯絡在一起,即openbutton.Bind(EVT_BUTTON,openfile)。

程式碼如下:

#coding:utf8
#利用佈局管理器,管理視窗
import wx
                                 
app = wx.App()
win = wx.Frame(None, title = "ahuang1900", size = (410,340)) #建立視窗

bkg = wx.Panel(win)  #建立畫布

def openfile(evt): #事件函式
    filepath = filename.GetValue()  #獲取值
    fopen = open(filepath)          #開啟檔案
    contents.SetValue(fopen.read()) #設定值
    fopen.close()

def savefile(evt):
    filepath = filename.GetValue()
    fopen = open(filepath,'w')
    fopen.write(contents.GetValue())
    fopen.close()

#基於畫布來建立主件,這樣主件可以置於畫布上了
openbutton = wx.Button(bkg, label = "open") #建立主件1
savebutton = wx.Button(bkg, label = "save") #建立主件2
filename = wx.TextCtrl(bkg) #建立主件3
contents = wx.TextCtrl(bkg, style = wx.TE_MULTILINE | wx.HSCROLL) #建立主件4


openbutton.Bind(wx.EVT_BUTTON, openfile) #主件openbutton繫結一個事件函式openfile
savebutton.Bind(wx.EVT_BUTTON, savefile) #主件savebutton繫結一個事件函式savefile

hbox = wx.BoxSizer()    #建立佈局管理器1

#下面是把已經建立好的主件以一定的方式新增到佈局管理器1中
hbox.Add(filename, proportion = 1, flag = wx.EXPAND)
hbox.Add(openbutton, proportion = 0, flag = wx.LEFT, border = 5                )
hbox.Add(savebutton, proportion = 0, flag = wx.LEFT, border = 5)

bbox = wx.BoxSizer(wx.VERTICAL) #建立佈局管理器2

#下面是把已經建立好的主件和佈局管理器2以一定的方式新增到佈局管理器2中
bbox.Add(hbox, proportion = 0, flag = wx.EXPAND | wx.ALL, border = 5)
bbox.Add(contents, proportion = 1, flag = wx.EXPAND | wx.LEFT | wx.BOTTOM | wx.RIGHT
         , border = 5)

bkg.SetSizer(bbox) #把佈局管理器,放置在畫布中

win.Show()
app.MainLoop()

執行結果: