Wxpython 事件的定義與綁定

# -*- coding:utf-8 -*-

'''
Wxpython 事件的定義與綁定
    1.定義事件函數
      事件函數不能接受其它參數,只能接受 event 的參數
    2.將事件函數和我們組件觸發的事件綁定起來
'''

import wx

#定義事件函數
    #讀函數
def openFile(event):
    '''
    getvalue 是獲取文本框的值
    setvalue 是設置文本框的值
    '''
    with open(pathText.GetValue(),"r") as f:
        content.SetValue(f.read())
    #寫函數
def saveFile(event):
    with open(pathText.GetValue(),"w") as f:
        f.write(content.GetValue())


app = wx.App()
frame = wx.Frame(None,title="MyFrame",size = (420,350))
panel = wx.Panel(frame)     #創建畫布,以主窗口爲父
but1 = wx.Button(panel,label="save")    #以畫布爲父類
but2 = wx.Button(panel,label="open")

#綁定事件
but2.Bind(wx.EVT_BUTTON,openFile)
but1.Bind(wx.EVT_BUTTON,saveFile)

pathText = wx.TextCtrl(panel)   #以畫布爲父類
content = wx.TextCtrl(panel)

#聲明尺寸器
sBox = wx.BoxSizer()               #水平尺寸器,不帶參數則爲默認的水平尺寸器
vBox = wx.BoxSizer(wx.VERTICAL)    #垂直尺寸器

#給尺寸器添加組件,從左往右,從上到下
sBox.Add(pathText,proportion = 3,flag = wx.EXPAND|wx.ALL,border = 5)
sBox.Add(but1,proportion = 1,flag = wx.EXPAND|wx.ALL,border = 5)
sBox.Add(but2,proportion = 1,flag = wx.EXPAND|wx.ALL,border = 5)

vBox.Add(sBox,proportion = 1,flag = wx.EXPAND|wx.ALL,border = 5)
vBox.Add(content,proportion = 5,flag = wx.EXPAND|wx.ALL,border = 5)

#設置主尺寸
panel.SetSizer(vBox) #因爲sBox被嵌套在vBox上,所以以vBox爲主尺寸

frame.Show()  #因爲文本組件和按鈕組件都是以窗框組件爲父組件,所以只需要調用frame
app.MainLoop()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章