Python有好多個GUI框架,wxPython比較流行,so just do it..... Win下各類不爽,又換Ubuntupython
跟着教程作個記事本。視頻地址:http://www.pythoner.cn/course/topic/wxPython-gui/react
Ubuntu下的安裝,仍是比較簡單的。linux
#使用:apt-cache search wxpython 測試一下,能夠看到相關信息 dizzy@dizzy-pc:~/Python$ apt-cache search wxpython cain - simulations of chemical reactions cain-examples - simulations of chemical reactions cain-solvers - simulations of chemical reactions gnumed-client - medical practice management - Client ... #這樣的話,直接使用: sudo apt-get install python-wxtools 便可安裝 dizzy@dizzy-pc:~/Python$ sudo apt-get install python-wxtools [sudo] password for dizzy: Reading package lists... Done Building dependency tree ...
測試是否安裝成功。進入Python,import wx 不報錯,便可shell
dizzy@dizzy-pc:~/Python$ python Python 2.7.3 (default, Apr 20 2012, 22:44:07) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import wx >>>
#!/usr/bin/python #coding:utf-8 import wx def main(): app = wx.App() win = wx.Frame(None) win.Show() app.MainLoop() if __name__ == '__main__': main() #這即是一個最簡單的可視化窗口的實現
#coding:utf-8 import wx def main(): app = wx.App() win = wx.Frame(None,title='NotePad',size=(440,320)) #很明顯,title就是標題,size就是大小 bt_open = wx.Button(win,label='open',pos=(275,2),size=(80,30)) bt_save = wx.Button(win,label='save',pos=(355,2),size=(80,30)) #label就是按鈕顯示的標籤,pos是控件左上角的相對位置,size就是控件的絕對大小 text_title = wx.TextCtrl(win,pos=(5,2),size=(265,30)) text_content = wx.TextCtrl(win,pos=(5,34),size=(430,276),style=wx.TE_MULTILINE|wx.HSCROLL) #style樣式,wx.TE_MULTILINE使其可以多行輸入,wx.HSCROOL使其具備水平滾動條 win.Show() app.MainLoop() if __name__ == '__main__': main() #作過桌面軟件開發的,對這個確定很熟悉。 #因爲以前學過一點VB,VC,Delphi等,學起來感受很簡單。 #將wx提供的控件添加到某個Frame上,並進行各自的屬性設置便可完成 #因爲文本控件的size屬性,設置的爲絕對值。這樣就會有一些問題......
因爲以前的控件直接綁定在Frame上,這樣會有一些問題。下面將使用Panel面板進行管理。小程序
## 固然,以前說將各類控件的位置都寫成絕對位置和大小,會有一些問題。這是不對的 ## 有時須要動態佈局,而有時則須要靜態佈局 import wx def main(): #建立App app = wx.App() #建立Frame win = wx.Frame(None,title='NotePad',size=(440,320)) win.Show() #建立Panel panel = wx.Panel(win) #建立open,save按鈕 bt_open = wx.Button(panel,label='open') bt_save = wx.Button(panel,label='save') #建立文本框,文本域 text_filename = wx.TextCtrl(panel) text_contents = wx.TextCtrl(panel,style=wx.TE_MULTILINE|wx.HSCROLL) #添加布局管理器 bsizer_top = wx.BoxSizer() bsizer_top.Add(text_filename,proportion=1,flag=wx.EXPAND) bsizer_top.Add(bt_open,proportion=0,flag=wx.LEFT,border=5) bsizer_top.Add(bt_save,proportion=0,flag=wx.LEFT,border=5) bsizer_all = wx.BoxSizer(wx.VERTICAL) #wx.VERTICAL 橫向分割 bsizer_all.Add(bsizer_top,proportion=0,flag=wx.EXPAND|wx.LEFT,border=5) bsizer_all.Add(text_contents,proportion=1,flag=wx.EXPAND|wx.ALL,border=5) panel.SetSizer(bsizer_all) app.MainLoop() if __name__ == '__main__': main() #這個是動態佈局。固然這只是一個視圖而已。 #這只是個表面而已,靈魂不在此!
直接上代碼。app
#!/usr/bin/python #coding:utf-8 import wx def openfile(evt): filepath = text_filename.GetValue() fopen = file(filepath) fcontent = fopen.read() text_contents.SetValue(fcontent) fopen.close() def savefile(evt): filepath = text_filename.GetValue() filecontents = text_contents.GetValue() fopen = file(filepath,'w') fopen.write(filecontents) fopen.close() app = wx.App() #建立Frame win = wx.Frame(None,title='NotePad',size=(440,320)) #建立Panel panel = wx.Panel(win) #建立open,save按鈕 bt_open = wx.Button(panel,label='open') bt_open.Bind(wx.EVT_BUTTON,openfile) #添加open按鈕事件綁定,openfile()函數處理 bt_save = wx.Button(panel,label='save') bt_save.Bind(wx.EVT_BUTTON,savefile) #添加save按鈕事件綁定,savefile()函數處理 #建立文本框,文本域 text_filename = wx.TextCtrl(panel) text_contents = wx.TextCtrl(panel,style=wx.TE_MULTILINE|wx.HSCROLL) #添加布局管理器 bsizer_top = wx.BoxSizer() bsizer_top.Add(text_filename,proportion=1,flag=wx.EXPAND,border=5) bsizer_top.Add(bt_open,proportion=0,flag=wx.LEFT,border=5) bsizer_top.Add(bt_save,proportion=0,flag=wx.LEFT,border=5) bsizer_all = wx.BoxSizer(wx.VERTICAL) bsizer_all.Add(bsizer_top,proportion=0,flag=wx.EXPAND|wx.LEFT,border=5) bsizer_all.Add(text_contents,proportion=1,flag=wx.EXPAND|wx.ALL,border=5) panel.SetSizer(bsizer_all) win.Show() app.MainLoop() 47,0-1 Bot ####################################################### # 打開,保存功能基本實現,但還存在不少bug。 # # 怎麼也算本身的第二個Python小程序吧!! # ###########################################################################
算是初步瞭解Python桌面GUI程序開發了吧。只是路漫漫其修遠兮...... 桌面開發暫告一段落,說好的正則還沒弄完,簡直喪心病狂。明天正則掃下尾,轉攻Django ,GOGOGO!
框架
又熬夜了,不知明天幾點能起牀!!!函數
--2014.7.24 5:01
oop