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()

 

运行结果图:

wxPython + Boa 练习程序

wxPython + Boa 练习程序

你可能感兴趣的:(wxPython)