Python-GUI簡單例項
阿新 • • 發佈:2019-02-08
用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決定邊框引數(決定間隔的引數)應用在哪條邊