用python語言編寫一個簡單記事本

看了一點python的基礎教程,忍不住手就癢了,找來一個題目練一下嘍。


題目:編寫一個功能簡單的記事本。
編寫記事本就要用到GUI的功能,最常用的當然是wxpython,那麼我們就用這個來寫一個記事本的程序吧。
首先來一些基本的功能調用,先熟悉一下它的基本構成:
import wx
app=wx.App()
win=wx.Frame(None)
win.Show()
app.MainLoop()
我們來分析一下這個程序的語句:
import wx是引入了wxpython模塊,wx.App()生成了一個應用程序,wx.Frame(None)生成了一個窗口的框架,用win.Show()顯示出來,最後對於程序不斷循環。
這樣就編寫了一個比較簡單的窗口程序了,不過這個窗口什麼也沒有,現在慢慢來將其內容充實起來吧。
先把這個空白的窗口加上一些標題(title)
import wx
app=wx.App()
win=wx.Frame(None,title='簡單記事本')
win.Show()
app.MainLoop()
我們所需要的記事本編輯器肯定得有兩個功能,第一能打開文件,第二能保存文件,那麼至少需要這兩個按鈕,一個是打開,一個是保存,按鈕的生成用wx.Button()實現。
按鈕的位置大小等等的確定需要各種參數,那麼怎麼修改上面的程序呢?接着往下來:
import wx
app=wx.App()
win=wx.Frame(None,title='簡單記事本'size=(410,335))
loadbutton=wx.Button(win,label='open',pos=(5,5),size=(80,25))
savebutton=wx.Button(win,label='save',pos=(90,5),size=(80,25))
win.Show()
app.MainLoop()
僅有按鈕還是不行的,還得有打開目錄的編輯區域和文本的編輯區域,就得用到wx.TextCtrl()這個函數來,繼續修改以上程序:
import wx
app=wx.App()
win=wx.Frame(None,title='簡單記事本',size=(410,335))
fileload=wx.TextCtrl(win,pos=(5,5),size=(230,25))
contents=wx.TextCtrl(win,pos=(5,35),size=(400,300))
loadbutton=wx.Button(win,label='open',pos=(240,5),size=(80,25))
savebutton=wx.Button(win,label='save',pos=(325,5),size=(80,25))
win.Show()
app.MainLoop()


一個簡單的模型就出來了吧,哈哈。但是這個記事本在拖拉時其編輯內容卻不能隨拖拉的變化而變化,而是保持原來的形狀完全不變,而且文件編輯區也不能隨意多行處理,要想其變化,還得對其修改:
import wx
app=wx.App()
win=wx.Frame(None,title='簡單記事本',size=(410,335))
bg=wx.Panel(win)

fileload=wx.TextCtrl(bg)
contents=wx.TextCtrl(bg,style=wx.TE_MULTILINE|wx.HSCROLL)
loadbutton=wx.Button(bg,label='open')
savebutton=wx.Button(bg,label='save')

level=wx.BoxSizer()
level.Add(fileload,proportion=1,flag=wx.EXPAND)
level.Add(loadbutton,proportion=0,flag=wx.LEFT,border=5)
level.Add(savebutton,proportion=0,flag=wx.LEFT,border=5)

down=wx.BoxSizer(wx.VERTICAL)
down.Add(level,proportion=0,flag=wx.EXPAND|wx.ALL,border=5)
down.Add(contents,proportion=1,flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.BOTTOM,border=5)

bg.SetSizer(down)

win.Show()
app.MainLoop()


用這個程序寫出來的記事本基本上只是個框架而已,他沒有打開與保存文件的功能,那麼怎麼才能實現打開與保存文件的功能呢?這裏用到了wx.Bind()函數,所以前面的程序可以將其改寫成
import wx
app=wx.App()
win=wx.Frame(None,title='簡單記事本',size=(410,335))
bg=wx.Panel(win)
def load(event):
   a=open(fileload.GetValue())
   contents.SetValue(a.read())
   a.close()

def save(event):
   c=open(fileload.GetValue(),'w')
   c.write(contents.GetValue())
   c.close()

fileload=wx.TextCtrl(bg)
contents=wx.TextCtrl(bg,style=wx.TE_MULTILINE|wx.HSCROLL)

loadbutton=wx.Button(bg,label='open')
savebutton=wx.Button(bg,label='save')
loadbutton.Bind(wx.EVT_BUTTON,load)
savebutton.Bind(wx.EVT_BUTTON,save)

level=wx.BoxSizer()
level.Add(fileload,proportion=1,flag=wx.EXPAND)
level.Add(loadbutton,proportion=0,flag=wx.LEFT,border=5)
level.Add(savebutton,proportion=0,flag=wx.LEFT,border=5)

down=wx.BoxSizer(wx.VERTICAL)
down.Add(level,proportion=0,flag=wx.EXPAND|wx.ALL,border=5)
down.Add(contents,proportion=1,flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.BOTTOM,border=5)

bg.SetSizer(down)

win.Show()
app.MainLoop()
這個程序就可以完成了,當然你也可以在自定義函數load()中修改,使其變爲:當沒有此文件時創建一個,然後對其編輯。這裏就不多說了,你可以自己實踐啊,哈哈。

總結:通過這個簡單記事本編輯器的編寫,我們基本上掌握了一些簡單的圖形編輯功能,那麼,很顯然我們還可以編寫一個簡單計算器,當然你要是想要編寫一個很複雜的科學計算器也不是不可能實現不了的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章