1. 程式人生 > >Python-GUI簡單例項

Python-GUI簡單例項

用python實現一個GUI小程式,一個可以開啟txt並寫入txt的記事本程式

import wx

def load(event):
    file = open(openfilename.GetValue())
    contents.SetValue(file.read())
    file.close()
def save(event):
    file = open(openfilename.GetValue(),'w')
    file.write(contents.GetValue())
    file.close()

app =  wx.App()
win =  wx.Frame(None
,title = "txteditor",size = (420,335)) bkg = wx.Panel(win) openbutton = wx.Button(bkg,label = "Open") openbutton.Bind(wx.EVT_BUTTON,load) savebutton = wx.Button(bkg,label = "Save") savebutton.Bind(wx.EVT_BUTTON,save) openfilename = wx.TextCtrl(bkg) contents = wx.TextCtrl(bkg,style = wx.TE_MULTILINE|wx.HSCROLL) hbox = wx.BoxSizer() hbox.Add(openfilename,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) vbox = wx.BoxSizer(wx.VERTICAL) vbox.Add(hbox,proportion =0,flag = wx.EXPAND|wx.ALL,border =5) vbox.Add(contents,proportion =1,flag = wx.EXPAND|wx.LEFT|wx.BOTTOM|wx.RIGHT,border =5
) bkg.SetSizer(vbox) win.Show() app.MainLoop()

涉及的知識:
1. wx.frame:相當於windows中的window,顯示出來的視窗介面,構造方法為
wx.Frame(parent, id, title, pos, size=wx.DefaultSize, style, name)
2. wx.Panel:面板,是視窗的容器,大小通常與frame一樣,在其上可以放各種控制元件,其上的控制元件可以通過TAB鍵進行遍歷,不要直接在框架上方控制元件,會造成很多問題,同一個框架上可以放多個面板。wxApp -> wxFrame -> wxPanel -> wxSizer -> wxControl
3. BoxSizer:一種佈局控制元件,分為橫向和縱向兩種,預設為橫向,把要排列的空間Add到其中即可
4. app.MainLoop():讓介面一直顯示,如果沒有這行程式碼,介面將會一閃消失
5. BoxSizer的Add方法中的引數:proportion引數根據在視窗改變大小時所分配的空間設定的比例;flag引數類似於元件的style引數,可用或運算進行連線,wx.EXPAND標記確保元件會擴充套件到所分配的空間中,而wx.LEFT..wx.ALL決定邊框引數(決定間隔的引數)應用在哪條邊