首页 > 代码库 > wxPython + Boa 练习程序

wxPython + Boa 练习程序

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

代码:

App:

#!/usr/bin/env python
#Boa:App:BoaApp

import wx

import Frame1

modules ={‘Dialog1‘: [0, ‘‘, u‘Dialog1.py‘],
 ‘Frame1‘: [1, ‘Main frame of Application‘, u‘Frame1.py‘]}

class BoaApp(wx.App):
    def OnInit(self):
        self.main = Frame1.create(None)
        self.main.Show()
        self.SetTopWindow(self.main)
        return True

def main():
    application = BoaApp(0)
    application.MainLoop()

if __name__ == ‘__main__‘:
    main()

Dialog:

#Boa:Dialog:Dialog1

import wx

def create(parent):
    return Dialog1(parent)

[wxID_DIALOG1, wxID_DIALOG1BUTTON1, wxID_DIALOG1STATICBITMAP1,
 wxID_DIALOG1STATICTEXT1, wxID_DIALOG1STATICTEXT2,
] = [wx.NewId() for _init_ctrls in range(5)]

class Dialog1(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don‘t edit
        wx.Dialog.__init__(self, id=wxID_DIALOG1, name=u‘Dialog1‘, parent=prnt,
              pos=wx.Point(365, 232), size=wx.Size(400, 492),
              style=wx.DEFAULT_DIALOG_STYLE, title=u‘About Notebook‘)
        self.SetClientSize(wx.Size(392, 465))

        self.staticText1 = wx.StaticText(id=wxID_DIALOG1STATICTEXT1,
              label=u‘Note Book - Simple Text Editor‘, name=‘staticText1‘,
              parent=self, pos=wx.Point(72, 32), size=wx.Size(220, 19),
              style=wx.ALIGN_CENTRE)
        self.staticText1.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL,
              False, u‘Tahoma‘))

        self.staticText2 = wx.StaticText(id=wxID_DIALOG1STATICTEXT2,
              label=u‘This is my first Boa app.‘, name=‘staticText2‘,
              parent=self, pos=wx.Point(112, 96), size=wx.Size(129, 14),
              style=0)
        self.staticText2.SetBackgroundColour(wx.Colour(212, 208, 200))

        self.staticBitmap1 = wx.StaticBitmap(bitmap=wx.Bitmap(u‘F:/Projects/guide1/6773383_753857.jpg‘,
              wx.BITMAP_TYPE_JPEG), id=wxID_DIALOG1STATICBITMAP1,
              name=‘staticBitmap1‘, parent=self, pos=wx.Point(48, 152),
              size=wx.Size(280, 160), style=0)

        self.button1 = wx.Button(id=wxID_DIALOG1BUTTON1, label=u‘Close‘,
              name=‘button1‘, parent=self, pos=wx.Point(152, 328),
              size=wx.Size(75, 24), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button,
              id=wxID_DIALOG1BUTTON1)

    def __init__(self, parent):
        self._init_ctrls(parent)

    def OnButton1Button(self, event):
        self.Close()

Frame:

 

#Boa:Frame:Frame1

 

import wx
import Dialog1

 

def create(parent):
    return Frame1(parent)

 

[wxID_FRAME1, wxID_FRAME1STATUSBAR1, wxID_FRAME1TEXTEDITOR,
] = [wx.NewId() for _init_ctrls in range(3)]

 

[wxID_FRAME1MENUFILECLOSE, wxID_FRAME1MENUFILEEXIT, wxID_FRAME1MENUFILEOPEN,
 wxID_FRAME1MENUFILESAVE, wxID_FRAME1MENUFILESAVEAS,
] = [wx.NewId() for _init_coll_menuFile_Items in range(5)]

 

[wxID_FRAME1MENUHELPABOUT] = [wx.NewId() for _init_coll_menuHelp_Items in range(1)]

 

class Frame1(wx.Frame):
    def _init_coll_menuBar1_Menus(self, parent):
        # generated method, don‘t edit

 

        parent.Append(menu=self.menuFile, title=u‘File‘)
        parent.Append(menu=self.menuHelp, title=u‘Help‘)

 

    def _init_coll_menuHelp_Items(self, parent):
        # generated method, don‘t edit

 

        parent.Append(help=u‘Display Info‘, id=wxID_FRAME1MENUHELPABOUT,
              kind=wx.ITEM_NORMAL, text=u‘About‘)
        self.Bind(wx.EVT_MENU, self.OnMenuHelpAboutMenu,
              id=wxID_FRAME1MENUHELPABOUT)

 

    def _init_coll_menuFile_Items(self, parent):
        # generated method, don‘t edit

 

        parent.Append(help=‘‘, id=wxID_FRAME1MENUFILEOPEN, kind=wx.ITEM_NORMAL,
              text=u‘Open‘)
        parent.Append(help=‘‘, id=wxID_FRAME1MENUFILESAVE, kind=wx.ITEM_NORMAL,
              text=u‘Save‘)
        parent.Append(help=‘‘, id=wxID_FRAME1MENUFILESAVEAS,
              kind=wx.ITEM_NORMAL, text=u‘Save As‘)
        parent.Append(help=‘‘, id=wxID_FRAME1MENUFILECLOSE, kind=wx.ITEM_NORMAL,
              text=u‘Close‘)
        parent.Append(help=‘‘, id=wxID_FRAME1MENUFILEEXIT, kind=wx.ITEM_NORMAL,
              text=u‘Exit‘)
        self.Bind(wx.EVT_MENU, self.OnMenuFileOpenMenu,
              id=wxID_FRAME1MENUFILEOPEN)
        self.Bind(wx.EVT_MENU, self.OnMenuFileSaveMenu,
              id=wxID_FRAME1MENUFILESAVE)
        self.Bind(wx.EVT_MENU, self.OnMenuFileSaveasMenu,
              id=wxID_FRAME1MENUFILESAVEAS)
        self.Bind(wx.EVT_MENU, self.OnMenuFileCloseMenu,
              id=wxID_FRAME1MENUFILECLOSE)
        self.Bind(wx.EVT_MENU, self.OnMenuFileExitMenu,
              id=wxID_FRAME1MENUFILEEXIT)

 

    def _init_coll_statusBar1_Fields(self, parent):
        # generated method, don‘t edit
        parent.SetFieldsCount(1)

 

        parent.SetStatusText(number=0, text=u‘status‘)

 

        parent.SetStatusWidths([-1])

 

    def _init_utils(self):
        # generated method, don‘t edit
        self.menuFile = wx.Menu(title=u‘File‘)

 

        self.menuHelp = wx.Menu(title=u‘Help‘)

 

        self.menuBar1 = wx.MenuBar()

 

        self._init_coll_menuFile_Items(self.menuFile)
        self._init_coll_menuHelp_Items(self.menuHelp)
        self._init_coll_menuBar1_Menus(self.menuBar1)

 

    def _init_ctrls(self, prnt):
        # generated method, don‘t edit
        wx.Frame.__init__(self, id=wxID_FRAME1, name=‘‘, parent=prnt,
              pos=wx.Point(550, 227), size=wx.Size(400, 492),
              style=wx.DEFAULT_FRAME_STYLE, title=u‘Notebook‘)
        self._init_utils()
        self.SetClientSize(wx.Size(392, 465))
        self.SetToolTipString(u‘Frame1‘)
        self.SetWindowVariant(wx.WINDOW_VARIANT_LARGE)
        self.SetMenuBar(self.menuBar1)

 

        self.statusBar1 = wx.StatusBar(id=wxID_FRAME1STATUSBAR1,
              name=‘statusBar1‘, parent=self, style=0)
        self._init_coll_statusBar1_Fields(self.statusBar1)
        self.SetStatusBar(self.statusBar1)

 

        self.textEditor = wx.TextCtrl(id=wxID_FRAME1TEXTEDITOR,
              name=u‘textEditor‘, parent=self, pos=wx.Point(0, 0),
              size=wx.Size(392, 426), style=wx.TE_MULTILINE, value=http://www.mamicode.com/u‘‘)

 

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.FileName = None

 

    def OnMenuFileOpenMenu(self, event):
        dlg = wx.FileDialog(self, ‘Choose a file‘, ‘.‘, ‘‘, ‘*.*‘, wx.OPEN)
        try:
            if dlg.ShowModal() == wx.ID_OK:
                filename = dlg.GetPath()
                # Your code
                self.textEditor.LoadFile(filename)
                self.FileName = filename
                self.SetTitle((‘Notebook - %s‘) % filename)
        finally:
            dlg.Destroy()       

 

    def OnMenuFileSaveMenu(self, event):
        if self.FileName == None:
            return self.OnFileSaveasMenu(event)
        else:
            self.textEditor.SaveFile(self.FileName)
       
    def OnMenuFileCloseMenu(self, event):
        self.FileName = None
        self.textEditor.clear()
        self.SetTitle(‘Notebook‘)       

 

    def OnMenuFileExitMenu(self, event):
        self.Close()      

 

    def OnMenuHelpAboutMenu(self, event):
        dlg = Dialog1.Dialog1(self)
        try:
            dlg.ShowModal()
        finally:
            dlg.Destroy()

 

    def OnMenuFileSaveasMenu(self, event):
        dlg = wx.FileDialog(self, ‘Save file as‘, ‘.‘, ‘‘, ‘*.*‘, wx.SAVE)
        try:
            if dlg.ShowModal() == wx.ID_OK:
                filename = dlg.GetPath()
                # Your code
                self.textEditor.SaveFile(filename)
                self.FileName = filename
                self.SetTitle((‘Notebook - %s‘) % filename)               
        finally:
            dlg.Destroy()

运行结果图: