本文實例講述了python使用wxpython開發簡單記事本的方法。分享給大家供大家參考。具體分析如下:
wxPython是Python編程語言的一個GUI工具箱。他使得Python程序員能夠輕松的創建具有健壯、功能強大的圖形用戶界面的程序。它是Python語言對流行的wxWidgets跨平臺GUI工具庫的綁定。而wxWidgets是用C++語言寫成的。
和Python語言與wxWidgetsGUI工具庫一樣,wxPython是開源軟件。這意味著任何人都可以免費地使用它并且可以查看和修改它的源代碼,或者貢獻補丁,增加功能。
wxPython是跨平臺的。這意味著同一個程序可以不經修改地在多種平臺上運行。現今支持的平臺有:32位微軟Windows操作系統、大多數Unix或類Unix系統、蘋果MacOS X。
下面使用wxpython編寫一個簡單的記事本程序,可以打開本地文件,編輯,保存。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
#!/usr/bin/python import wx def OnOpen(event): """ Load a file into the textField. """ dialog = wx.FileDialog( None , 'Notepad' ,style = wx. OPEN ) if dialog.ShowModal() = = wx.ID_OK: filename.SetValue(dialog.GetPath()) file = open (dialog.GetPath()) contents.SetValue( file .read()) file .close() dialog.Destroy() def OnSave(event): """ Save text into the orignal file. """ if filename.GetValue() = = '': dialog = wx.FileDialog( None , 'Notepad' ,style = wx.SAVE) if dialog.ShowModal() = = wx.ID_OK: filename.SetValue(dialog.GetPath()) file = open (dialog.GetPath(), 'w' ) file .write(contents.GetValue()) file .close() dialog.Destory() else : file = open (filename.GetValue(), 'w' ) file .write(contents.GetValue()) file .close() app = wx.App() win = wx.Frame( None , title = "Simple Editor" , size = ( 600 , 400 )) bkg = wx.Panel(win) # Define a 'load' button and its label, # bind to an button event with a function 'load' loadButton = wx.Button(bkg, label = 'Open' ) loadButton.Bind(wx.EVT_BUTTON, OnOpen) # Define a 'save' button and its label, # bind to an button event with a function 'save' saveButton = wx.Button(bkg, label = 'Save' ) saveButton.Bind(wx.EVT_BUTTON, OnSave) # Define a textBox for filename. filename = wx.TextCtrl(bkg) # Define a textBox for file contents. contents = wx.TextCtrl(bkg, style = wx.TE_MULTILINE | wx.HSCROLL) # Use sizer to set relative position of the components. # Horizontal layout hbox = wx.BoxSizer() hbox.Add(filename, proportion = 1 , flag = wx.EXPAND) hbox.Add(loadButton, proportion = 0 , flag = wx.LEFT, border = 5 ) hbox.Add(saveButton, proportion = 0 , flag = wx.LEFT, border = 5 ) # Vertical layout 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() |
運行效果如下圖所示:
這個例子是《Python基礎教程》中的一個例子,并做了一些修改。雖然完成了基本的記事本功能,但是界面略顯簡單,而且代碼也沒有很好地遵循面向對象編程原則。
希望本文所述對大家的Python程序設計有所幫助。