前言 wxFormbuilder的文章非常少,也沒有一個(gè)官方指南,非??拥2贿^網(wǎng)絡(luò)上有很多大神,參考了一下,然后自己再試試,頁算是能摸索出用法。wxFormbuilder只能設(shè)計(jì)布局,事件只能鏈接一個(gè)名字,具體的要導(dǎo)出來腳本之后,在主腳本繼承之后,再寫。 參考了以下兩篇文章: http://www.cnblogs.com/hester/p/4696355.html 做一個(gè)編輯器
http://blog.csdn.net/baoyan2015/article/details/54613930 如何安裝wxFormBuilder,然后導(dǎo)出GUI的代碼
之前用python不會GUI,總是用的腳本,非常不方便,于是想學(xué)習(xí)以下wxpython. 然而太難了,所以用wxFormBuilder來輔助一下。 一.目的是用wxFormBuilder設(shè)計(jì)一個(gè)這樣的東東
二.過程有點(diǎn)麻煩,參考文章一,在wxFormBuilder 點(diǎn)來點(diǎn)去,終于點(diǎn)成差不多的樣子,把參數(shù)啥的在旁邊填一下。 首先是一個(gè)Frame,然后加一個(gè)豎著的wxBoxSizer,然后再來一個(gè)橫著的wxBoxSizer,這兩個(gè)wxBoxSizer是一個(gè)按鈕,不過在旁邊的properties可以修改為橫著的,還是豎著的 然后添加一個(gè)wxTextCtril,兩個(gè)wxButton,再在下面添加一個(gè)wxTextCtrl就好了。
然后在右邊的Properties點(diǎn)點(diǎn)點(diǎn),填填填。點(diǎn)擊中間的Python頁,能看到有python代碼在這。給他copy出來,導(dǎo)出保存。我給它取名叫做MyFrame1.py
三.這個(gè)是導(dǎo)出的代碼 MyFrame1.py # -*- coding: utf-8 -*-
########################################################################### ## Python code generated with wxFormBuilder (version Jun 17 2015) ## http://www./ ## ## PLEASE DO 'NOT' EDIT THIS FILE! ###########################################################################
import wx import wx.xrc
########################################################################### ## Class MyFrame1 ###########################################################################
class MyFrame1 ( wx.Frame ): def __init__( self, parent ): wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u'編輯器', pos = wx.DefaultPosition, size = wx.Size( 410,335 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL ) self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize ) bSizer1 = wx.BoxSizer( wx.VERTICAL ) bSizer2 = wx.BoxSizer( wx.HORIZONTAL ) self.filename = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.Point( 5,5 ), wx.Size( 210,25 ), 0 ) bSizer2.Add( self.filename, 0, wx.ALL, 5 ) self.loadbutton = wx.Button( self, wx.ID_ANY, 'load', wx.Point( 225,5 ), wx.Size( 80,25 ), 0 ) bSizer2.Add( self.loadbutton, 0, wx.ALL, 5 ) self.savebutton = wx.Button( self, wx.ID_ANY, 'save', wx.Point( 315,5 ), wx.Size( 80,25 ), 0 ) bSizer2.Add( self.savebutton, 0, wx.ALL, 5 ) bSizer1.Add( bSizer2, 1, wx.EXPAND, 5 ) self.contents = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.Point( 5,35 ), wx.Size( 390,260 ), wx.TE_MULTILINE|wx.HSCROLL ) bSizer1.Add( self.contents, 0, wx.ALL, 5 ) self.SetSizer( bSizer1 ) self.Layout() self.Centre( wx.BOTH ) # Connect Events self.loadbutton.Bind( wx.EVT_BUTTON, self.load ) self.savebutton.Bind( wx.EVT_BUTTON, self.save ) def __del__( self ): pass # Virtual event handlers, overide them in your derived class def load( self, event ): pass def save( self, event ): pass
四.在同一個(gè)文件夾下面做一個(gè)主腳本ex22.py,調(diào)用繼承上面的那個(gè)腳本。以下是代碼: # -*- coding: UTF-8 -*- import wx import MyFrame1 import sys reload(sys) sys.setdefaultencoding('utf-8')
class MyFrame(MyFrame1.MyFrame1): # 首先,咱們從剛剛源文件中將主窗體繼承下來.就是修改過name屬性的主窗體咯。 def load( self, event): file=open(self.filename.GetValue()) self.contents.SetValue(file.read()) file.close def save( self, event ): file=open(self.filename.GetValue(),'w') file.write(self.contents.GetValue()) file.close() if __name__ == '__main__': app = wx.App() main_win = MyFrame(None) main_win.Show()
app.MainLoop() 五.運(yùn)行試試:
輸入文件名,可以打開同目錄下的文件,而且顯示在下方。修改后也可以保存。
|