最近需要做点支持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=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()

运行结果图:

最新文章

  1. k近邻(KNN)复习总结
  2. linux 下 C语言显示中文
  3. 大型网站seo优化之行业网站seo优化具体操作思路
  4. Regex.Match 方法
  5. 最牛「CSRF防护」,带你进入大虾们的圈子!
  6. javascript——处理(获取)浏览器版本、操作系统
  7. M端页面-绝对定位布局
  8. Python 第五篇(上):算法、自定义模块、系统标准模块(time 、datetime 、random 、OS 、sys 、hashlib 、json和pickle)
  9. 初始WebApi 利用WebApi实现基础的CRUD
  10. Valgrind: memcheck of memleak/mem-uninitialization; massif usage
  11. win10下使用nodejs安装及webstorm创建express项目的指导
  12. 获取当前TestStep发送的request信息
  13. csu1804
  14. 【tmos】SpringBoot+WebSocket打包时候的注意点
  15. JSP、EL表达式的入门(要用)
  16. C++读取txt和保存到txt
  17. vue2.0一安装的插件详解
  18. 027.1 反射技术 Class
  19. Request URI Too Long
  20. 从Spring到SpringBoot构建WEB MVC核心配置详解

热门文章

  1. 【开源项目10】安卓图表引擎AChartEngine
  2. TQ210开发板NFS挂载android4.0.4的rootfs的方法
  3. hibernate中session的获取使用以及其他注意事项
  4. 伪分布式下的hadoop简单配置
  5. Linux下MySQL主从同步配置
  6. Python 标准库 urllib2 的使用细节[转]
  7. codeforces 676A A. Nicholas and Permutation(水题)
  8. 2000 Asia shanghai Dance Dance Revolution
  9. C# 微信支付证书使用
  10. nginx二级域名配置