wxPython + Boa 练习程序

最近需要做点支持linux的跨平台gui,网上查到了wxPython及Boa,感觉不错,照着Boa文档做做练习。

代码:

App:

 1 #!/usr/bin/env python
 2 #Boa:App:BoaApp
 3 
 4 import wx
 5 
 6 import Frame1
 7 
 8 modules ={'Dialog1': [0, '', u'Dialog1.py'],
 9  'Frame1': [1, 'Main frame of Application', u'Frame1.py']}
10 
11 class BoaApp(wx.App):
12     def OnInit(self):
13         self.main = Frame1.create(None)
14         self.main.Show()
15         self.SetTopWindow(self.main)
16         return True
17 
18 def main():
19     application = BoaApp(0)
20     application.MainLoop()
21 
22 if __name__ == '__main__':
23     main()

 

Dialog:

 1 #Boa:Dialog:Dialog1
 2 
 3 import wx
 4 
 5 def create(parent):
 6     return Dialog1(parent)
 7 
 8 [wxID_DIALOG1, wxID_DIALOG1BUTTON1, wxID_DIALOG1STATICBITMAP1, 
 9  wxID_DIALOG1STATICTEXT1, wxID_DIALOG1STATICTEXT2, 
10 ] = [wx.NewId() for _init_ctrls in range(5)]
11 
12 class Dialog1(wx.Dialog):
13     def _init_ctrls(self, prnt):
14         # generated method, don't edit
15         wx.Dialog.__init__(self, id=wxID_DIALOG1, name=u'Dialog1', parent=prnt,
16               pos=wx.Point(365, 232), size=wx.Size(400, 492),
17               style=wx.DEFAULT_DIALOG_STYLE, title=u'About Notebook')
18         self.SetClientSize(wx.Size(392, 465))
19 
20         self.staticText1 = wx.StaticText(id=wxID_DIALOG1STATICTEXT1,
21               label=u'Note Book - Simple Text Editor', name='staticText1',
22               parent=self, pos=wx.Point(72, 32), size=wx.Size(220, 19),
23               style=wx.ALIGN_CENTRE)
24         self.staticText1.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL,
25               False, u'Tahoma'))
26 
27         self.staticText2 = wx.StaticText(id=wxID_DIALOG1STATICTEXT2,
28               label=u'This is my first Boa app.', name='staticText2',
29               parent=self, pos=wx.Point(112, 96), size=wx.Size(129, 14),
30               style=0)
31         self.staticText2.SetBackgroundColour(wx.Colour(212, 208, 200))
32 
33         self.staticBitmap1 = wx.StaticBitmap(bitmap=wx.Bitmap(u'F:/Projects/guide1/6773383_753857.jpg',
34               wx.BITMAP_TYPE_JPEG), id=wxID_DIALOG1STATICBITMAP1,
35               name='staticBitmap1', parent=self, pos=wx.Point(48, 152),
36               size=wx.Size(280, 160), style=0)
37 
38         self.button1 = wx.Button(id=wxID_DIALOG1BUTTON1, label=u'Close',
39               name='button1', parent=self, pos=wx.Point(152, 328),
40               size=wx.Size(75, 24), style=0)
41         self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button,
42               id=wxID_DIALOG1BUTTON1)
43 
44     def __init__(self, parent):
45         self._init_ctrls(parent)
46 
47     def OnButton1Button(self, event):
48         self.Close()

 

Frame: 

  1 #Boa:Frame:Frame1
  2 
  3  
  4 
  5 import wx
  6 import Dialog1
  7 
  8  
  9 
 10 def create(parent):
 11     return Frame1(parent)
 12 
 13  
 14 
 15 [wxID_FRAME1, wxID_FRAME1STATUSBAR1, wxID_FRAME1TEXTEDITOR, 
 16 ] = [wx.NewId() for _init_ctrls in range(3)]
 17 
 18  
 19 
 20 [wxID_FRAME1MENUFILECLOSE, wxID_FRAME1MENUFILEEXIT, wxID_FRAME1MENUFILEOPEN, 
 21  wxID_FRAME1MENUFILESAVE, wxID_FRAME1MENUFILESAVEAS, 
 22 ] = [wx.NewId() for _init_coll_menuFile_Items in range(5)]
 23 
 24  
 25 
 26 [wxID_FRAME1MENUHELPABOUT] = [wx.NewId() for _init_coll_menuHelp_Items in range(1)]
 27 
 28  
 29 
 30 class Frame1(wx.Frame):
 31     def _init_coll_menuBar1_Menus(self, parent):
 32         # generated method, don't edit
 33 
 34  
 35 
 36         parent.Append(menu=self.menuFile, title=u'File')
 37         parent.Append(menu=self.menuHelp, title=u'Help')
 38 
 39  
 40 
 41     def _init_coll_menuHelp_Items(self, parent):
 42         # generated method, don't edit
 43 
 44  
 45 
 46         parent.Append(help=u'Display Info', id=wxID_FRAME1MENUHELPABOUT,
 47               kind=wx.ITEM_NORMAL, text=u'About')
 48         self.Bind(wx.EVT_MENU, self.OnMenuHelpAboutMenu,
 49               id=wxID_FRAME1MENUHELPABOUT)
 50 
 51  
 52 
 53     def _init_coll_menuFile_Items(self, parent):
 54         # generated method, don't edit
 55 
 56  
 57 
 58         parent.Append(help='', id=wxID_FRAME1MENUFILEOPEN, kind=wx.ITEM_NORMAL,
 59               text=u'Open')
 60         parent.Append(help='', id=wxID_FRAME1MENUFILESAVE, kind=wx.ITEM_NORMAL,
 61               text=u'Save')
 62         parent.Append(help='', id=wxID_FRAME1MENUFILESAVEAS,
 63               kind=wx.ITEM_NORMAL, text=u'Save As')
 64         parent.Append(help='', id=wxID_FRAME1MENUFILECLOSE, kind=wx.ITEM_NORMAL,
 65               text=u'Close')
 66         parent.Append(help='', id=wxID_FRAME1MENUFILEEXIT, kind=wx.ITEM_NORMAL,
 67               text=u'Exit')
 68         self.Bind(wx.EVT_MENU, self.OnMenuFileOpenMenu,
 69               id=wxID_FRAME1MENUFILEOPEN)
 70         self.Bind(wx.EVT_MENU, self.OnMenuFileSaveMenu,
 71               id=wxID_FRAME1MENUFILESAVE)
 72         self.Bind(wx.EVT_MENU, self.OnMenuFileSaveasMenu,
 73               id=wxID_FRAME1MENUFILESAVEAS)
 74         self.Bind(wx.EVT_MENU, self.OnMenuFileCloseMenu,
 75               id=wxID_FRAME1MENUFILECLOSE)
 76         self.Bind(wx.EVT_MENU, self.OnMenuFileExitMenu,
 77               id=wxID_FRAME1MENUFILEEXIT)
 78 
 79  
 80 
 81     def _init_coll_statusBar1_Fields(self, parent):
 82         # generated method, don't edit
 83         parent.SetFieldsCount(1)
 84 
 85  
 86 
 87         parent.SetStatusText(number=0, text=u'status')
 88 
 89  
 90 
 91         parent.SetStatusWidths([-1])
 92 
 93  
 94 
 95     def _init_utils(self):
 96         # generated method, don't edit
 97         self.menuFile = wx.Menu(title=u'File')
 98 
 99  
100 
101         self.menuHelp = wx.Menu(title=u'Help')
102 
103  
104 
105         self.menuBar1 = wx.MenuBar()
106 
107  
108 
109         self._init_coll_menuFile_Items(self.menuFile)
110         self._init_coll_menuHelp_Items(self.menuHelp)
111         self._init_coll_menuBar1_Menus(self.menuBar1)
112 
113  
114 
115     def _init_ctrls(self, prnt):
116         # generated method, don't edit
117         wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
118               pos=wx.Point(550, 227), size=wx.Size(400, 492),
119               style=wx.DEFAULT_FRAME_STYLE, title=u'Notebook')
120         self._init_utils()
121         self.SetClientSize(wx.Size(392, 465))
122         self.SetToolTipString(u'Frame1')
123         self.SetWindowVariant(wx.WINDOW_VARIANT_LARGE)
124         self.SetMenuBar(self.menuBar1)
125 
126  
127 
128         self.statusBar1 = wx.StatusBar(id=wxID_FRAME1STATUSBAR1,
129               name='statusBar1', parent=self, style=0)
130         self._init_coll_statusBar1_Fields(self.statusBar1)
131         self.SetStatusBar(self.statusBar1)
132 
133  
134 
135         self.textEditor = wx.TextCtrl(id=wxID_FRAME1TEXTEDITOR,
136               name=u'textEditor', parent=self, pos=wx.Point(0, 0),
137               size=wx.Size(392, 426), style=wx.TE_MULTILINE, value=u'')
138 
139  
140 
141     def __init__(self, parent):
142         self._init_ctrls(parent)
143         self.FileName = None
144 
145  
146 
147     def OnMenuFileOpenMenu(self, event):
148         dlg = wx.FileDialog(self, 'Choose a file', '.', '', '*.*', wx.OPEN)
149         try:
150             if dlg.ShowModal() == wx.ID_OK:
151                 filename = dlg.GetPath()
152                 # Your code
153                 self.textEditor.LoadFile(filename)
154                 self.FileName = filename
155                 self.SetTitle(('Notebook - %s') % filename)
156         finally:
157             dlg.Destroy()       
158 
159  
160 
161     def OnMenuFileSaveMenu(self, event):
162         if self.FileName == None:
163             return self.OnFileSaveasMenu(event)
164         else:
165             self.textEditor.SaveFile(self.FileName)
166         
167     def OnMenuFileCloseMenu(self, event):
168         self.FileName = None
169         self.textEditor.clear()
170         self.SetTitle('Notebook')       
171 
172  
173 
174     def OnMenuFileExitMenu(self, event):
175         self.Close()      
176 
177  
178 
179     def OnMenuHelpAboutMenu(self, event):
180         dlg = Dialog1.Dialog1(self)
181         try:
182             dlg.ShowModal()
183         finally:
184             dlg.Destroy()
185 
186  
187 
188     def OnMenuFileSaveasMenu(self, event):
189         dlg = wx.FileDialog(self, 'Save file as', '.', '', '*.*', wx.SAVE)
190         try:
191             if dlg.ShowModal() == wx.ID_OK:
192                 filename = dlg.GetPath()
193                 # Your code
194                 self.textEditor.SaveFile(filename)
195                 self.FileName = filename
196                 self.SetTitle(('Notebook - %s') % filename)                
197         finally:
198             dlg.Destroy()

 

运行结果图:

posted @ 2014-07-05 18:56  追风的蜗牛  阅读(595)  评论(0)    收藏  举报