`
purpen
  • 浏览: 795157 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

wxPython写的简易编辑器(原创)

阅读更多
看了两天wxPython文档,作为练习简单做了一个简易的文本编辑器。有什么错误用法,希望一二,多谢!

呵呵,实现的功能是很简单的.(新建/打开/保存/另存/剪切/复制/粘贴/全选/删除^_^就这么多,算做simpleEditor beta1.0版吧。以后慢慢补充。)

python 代码:

# simpleEditor.py
 
  1. #!/usr/bin/env python  
  2. #coding=utf-8  
  3.   
  4. import wx  
  5. from wx.lib.wordwrap import wordwrap  
  6. import wx.richtext as rt  
  7. import ossys  
  8.   
  9. ID_NEW   =  wx.NewId()  
  10. ID_OPEN  =  wx.NewId()  
  11. ID_SAVE  =  wx.NewId()  
  12. ID_SAVEAS = wx.NewId()  
  13. ID_EXIT  =  wx.NewId()  
  14. ID_ABOUT =  wx.NewId()  
  15. ID_CUT   =  wx.NewId()  
  16. ID_COPY  =  wx.NewId()  
  17. ID_PASTE =  wx.NewId()  
  18. ID_SELECT = wx.NewId()  
  19. ID_CLEAR =  wx.NewId()  
  20.   
  21. wildcard = "Python source (*.py)|*.py|"    
  22.   
  23. class SimpleEditor(wx.Frame):  
  24.       
  25.     cur_file = ''  # current operate file  
  26.       
  27.     def __init__(self, parent, id, title):  
  28.         wx.Frame.__init__(self, parent, id, title, size=(1024, 768))  
  29.           
  30.         #------------create text area--------------  
  31.         edit_area = wx.TextCtrl(self, -1, style=wx.TE_MULTILINE)  
  32.         self.text = edit_area  
  33.         wx.CallAfter(self.text.SetFocus)  
  34.           
  35.         #------------create status bar-------------  
  36.         self.CreateStatusBar()  
  37.         self.SetStatusText('Here display operate status.')  
  38.         #------------create menubar----------------  
  39.         menubar = wx.MenuBar(wx.MB_DOCKABLE)  
  40.         #------------create menus------------------  
  41.         file = wx.Menu()  
  42.         edit = wx.Menu()  
  43.         help = wx.Menu()  
  44.           
  45.         file.Append(ID_NEW, '&New\tCtrl+N', 'Create a new File')  
  46.         file.Append(ID_OPEN, '&Open\tCtrl+O', 'Open a File')  
  47.         file.Append(ID_SAVE, '&Save\tCtrl+S', 'Save a File')  
  48.         file.Append(ID_SAVEAS, '&Save As\tShift+Ctrl+S', 'Save as a File')  
  49.         file.AppendSeparator()  
  50.         file.Append(ID_EXIT, 'E&xit\tCtrl+W', 'Exit Current window')  
  51.           
  52.         edit.Append(ID_CUT, '&Cut\tCtrl+X', 'Cut select text')  
  53.         edit.Append(ID_COPY, '&Copy\tCtrl+C', 'Copy select text')  
  54.         edit.Append(ID_PASTE, '&Paste\tCtrl+V', 'Paste clipboard text')  
  55.         edit.AppendSeparator()  
  56.         edit.Append(ID_SELECT, '&Select All\tCtrl+A', 'Select all')  
  57.         edit.Append(ID_CLEAR, '&Clear\tCtrl+D', 'delete select text')  
  58.   
  59.         help.Append(ID_ABOUT, '&About Simple Editor', 'Simple Editor Message')  
  60.         menubar.Append(file, '&File')  
  61.         menubar.Append(edit, '&Edit')  
  62.         menubar.Append(help, '&Help')  
  63.         self.Bind(wx.EVT_MENU, self.OnOpen, id=ID_OPEN)  
  64.         self.Bind(wx.EVT_MENU, self.OnSave, id=ID_SAVE)  
  65.         self.Bind(wx.EVT_MENU, self.OnSaveAs, id=ID_SAVEAS)  
  66.         self.Bind(wx.EVT_MENU, self.OnExit, id=ID_EXIT)  
  67.         self.Bind(wx.EVT_MENU, self.OnAbout, id=ID_ABOUT)  
  68.         self.Bind(wx.EVT_MENU, self.OnCut, id=ID_CUT)  
  69.         self.Bind(wx.EVT_MENU, self.OnCopy, id=ID_COPY)  
  70.         self.Bind(wx.EVT_MENU, self.OnSelectAll, id=ID_SELECT)  
  71.         self.Bind(wx.EVT_MENU, self.OnClear, id=ID_CLEAR)  
  72.         self.Bind(wx.EVT_MENU, self.OnPaste, id=ID_PASTE)  
  73.           
  74.         # set the menu bar  
  75.         self.SetMenuBar(menubar)     
  76.         #-------------------create tools bar-----------------------  
  77.         toolbar = self.CreateToolBar(wx.TB_HORIZONTAL | wx.NO_BORDER  
  78.                                  | wx.TB_FLAT | wx.TB_TEXT)  
  79.         toolbar.AddLabelTool(ID_NEW, '', wx.Bitmap('icons/new.gif'))  
  80.         toolbar.AddLabelTool(ID_OPEN, '', wx.Bitmap('icons/open.gif'))  
  81.         toolbar.AddLabelTool(ID_SAVE, '', wx.Bitmap('icons/save.gif'))  
  82.         
  83.     #-------------------File menu event-------------------------  
  84.     def OnOpen(self, event):  
  85.         dlg = wx.FileDialog(  
  86.             self, message="Choose a file", defaultDir=os.getcwd(),  
  87.             defaultFile="", wildcard="All files (*.*)|*.*",  
  88.             style=wx.OPEN | wx.MULTIPLE | wx.CHANGE_DIR  
  89.             )  
  90.         if dlg.ShowModal() == wx.ID_OK:  
  91.             #paths = dlg.GetPaths()  
  92.             #print 'You selected files is %s:' % (paths)  
  93.             path = dlg.GetPath()  
  94.             if path: # open a file  
  95.                 self.cur_file = path  
  96.                 #self.text.SetValue(open(path,'r').read())  
  97.                 self.text.LoadFile(path, rt.RICHTEXT_TYPE_TEXT)  
  98.         dlg.Destroy()  
  99.           
  100.     def OnSave(self, event):  
  101.         cur_content = self.text.GetValue()  
  102.         if not self.cur_file:  
  103.             # if current file is new  
  104.             dlg = wx.FileDialog(  
  105.                 self, message="Save file as ...", defaultDir=os.getcwd(),  
  106.                 defaultFile="", wildcard="*.*", style=wx.SAVE  
  107.                 )  
  108.             if dlg.ShowModal() == wx.ID_OK:  
  109.                 self.cur_file = dlg.GetPath()  
  110.             elsepass         
  111.         if self.cur_file:  
  112.             fp = open(self.cur_file, 'w')  
  113.             fp.write(cur_content)  
  114.             fp.close()  
  115.           
  116.     def OnSaveAs(self, event):  
  117.         dlg = wx.FileDialog(  
  118.             self, "Choose a filename", wildcard="All files (*.*)|*.*",  
  119.             style=wx.SAVE)  
  120.         if dlg.ShowModal() == wx.ID_OK:  
  121.             path = dlg.GetPath()  
  122.             if path:  
  123.                 #self.text.SaveFile(path)  
  124.                 self.cur_file = path  
  125.                 fp = open(path, 'w')  
  126.                 fp.write(self.text.GetValue())  
  127.                 fp.close()  
  128.         dlg.Destroy()  
  129.               
  130.     def OnExit(self, event):  
  131.         self.Close(True)  
  132.     #-------------------Edit menu event---------------------------  
  133.     def OnCut(self, event):  
  134.         # Cut select text  
  135.         self.text.Cut()  
  136.           
  137.     def OnCopy(self, event):  
  138.         # copy select text  
  139.         self.text.Copy()  
  140.           
  141.     def OnPaste(self, event):  
  142.         # paste clipboard text  
  143.         self.text.Paste()  
  144.                 
  145.     def OnSelectAll(self, event):  
  146.         # select all text  
  147.         self.text.SelectAll()  
  148.           
  149.     def OnClear(self, event):  
  150.         # delete select text  
  151.         # self.text.Clear() is delete all text  
  152.         start,end = self.text.GetSelection()  
  153.         self.text.Remove(start, end)     
  154.           
  155.     #-------------------Help menu event---------------------------  
  156.     def OnAbout(self, event):  
  157.         # First we create and fill the info object  
  158.         info = wx.AboutDialogInfo()  
  159.         info.Name = "Simple Editor"  
  160.         info.Version = "beta 1.0"  
  161.         info.Copyright = "(C) 2008 Programmers and Coders Everywhere"  
  162.         # copy from wxPython demo  
  163.         info.Description = wordwrap(  
  164.             "A \"hello world\" program is a software program that prints out "  
  165.             "\"Hello world!\" on a display device. It is used in many introductory "  
  166.             "tutorials for teaching a programming language."  
  167.               
  168.             "\n\nSuch a program is typically one of the simplest programs possible "  
  169.             "in a computer language. A \"hello world\" program can be a useful "  
  170.             "sanity test to make sure that a language's compiler, development "  
  171.             "environment, and run-time environment are correctly installed.",  
  172.             350, wx.ClientDC(self))  
  173.         info.WebSite = ("http://www.bobo.com.cn", "BOBO VIDEO")  
  174.         info.Developers = ["Purpen"]  
  175.         # Then we call wx.AboutBox giving it that info object  
  176.         wx.AboutBox(info)  
  177.       
  178. class RunApp(wx.App):  
  179.     def OnInit(self):  
  180.         win = SimpleEditor(None, 1, 'SimpleEditor')  
  181.         self.SetTopWindow(win)  
  182.         win.Show(True)  
  183.         return True  # can't forget  
  184.           
  185. if __name__ == '__main__':  
  186.     RunApp().MainLoop()  

下载可以直接在命令行下运行(当然,环境一定要支持)。
分享到:
评论
3 楼 最佳蜗牛 2013-03-04  
最佳蜗牛 写道
是不是缺少了一个toolbar.Realize()?

第81行下面
2 楼 最佳蜗牛 2013-03-04  
是不是缺少了一个toolbar.Realize()?
1 楼 最佳蜗牛 2013-03-04  
2.7.3版本里不能显示工具栏的图标

相关推荐

    python UI可视化设计工具(WxPython可视化编辑器)

    Python UI 可视化设计工具,特别是基于 WxPython 的可视化编辑器,是开发者们用于构建用户界面的强大工具。WxPython 是一个流行的 Python 库,它提供了原生的跨平台 GUI 工具包,使得开发者可以使用 Python 来创建...

    WxPython可视化编辑器.exe

    WxPython可视化编辑器.exe

    WxPython可视化编辑器.rar

    WxPython可视化编辑器是一款基于Python的开发工具,它整合了WxPython库的强大功能,为程序员提供了一个直观、易用的界面来构建GUI(图形用户界面)应用程序。WxPython是Python编程语言中广泛使用的GUI工具包,它实现...

    WxPython可视化编辑器中文版1.2

    WxPython可视化编辑器是一款可视化的Python编辑器,各个组件配备官网翻译的中文文档跟对应链接,可以直接通过鼠标拖拽来设计程序 本工具只是用来生成界面代码的,WxPython是python的一个界面库,生成后自己复制粘贴...

    wxpython写的web摄像头

    自己用wxpython写的web摄像头界面,能显示与其相对应分辨率的rgb565格式的图像。

    wxPython写的拼图小游戏

    综上所述,"wxPython写的拼图小游戏"是一个集图像处理、事件处理、布局管理、游戏逻辑于一体的项目,它展示了`wxPython`在开发复杂GUI应用时的强大功能。通过深入学习和实践,开发者不仅可以掌握`wxPython`的基本...

    wxPython写的类似qq截图的小程序

    【标题】:“wxPython写的类似qq截图的小程序” 在标题中提到的“wxPython写的类似qq截图的小程序”指的是一个使用wxPython库开发的应用程序,它具有与腾讯QQ的截图功能相似的特性。wxPython是Python编程语言的一个...

    wxPython界面设计器

    我是在Linux Mint下开发的,一个类似Ubuntu的Linxu发行版。系统自带了python 2.7,并且我已经安装了对应的wxPython。所以同学们需要自己去百度怎么处理的操作系统的环境了。下面,将以我在Linux下的操作作为例子。

    基于wxpython和Python的跨平台编辑器设计源码

    该项目是一款基于wxpython和Python开发的跨平台文本编辑器源码,总计包含823个文件,其中包括454个Python源文件、76个文本文件、69个GIF图像文件、29个HTML文件、28个PIN文件、24个PNG图像文件、22个CSS样式表文件、...

    用wxpython写的一个聊天室程序,有客服端和服务器端

    【标题】中的“用wxpython写的一个聊天室程序”指的是使用wxPython库开发的一款聊天应用程序。wxPython是Python编程语言中一个流行的GUI(图形用户界面)工具包,它基于C++的wxWidgets库,提供了丰富的控件和组件,...

    wxpython写的一款强大的电子书软件,附上源代码,供学习使用

    基于wxpython写的一款电子书软件的源码。功能强大且语言简洁。只用于电脑上观看,不支持手机。供python wxpython学习使用。

    wxPython-demo-4.0.3.tar:wxPython官方demo

    2. **布局管理器**:wxPython使用布局管理器(如BoxSizer、GridSizer、FlexGridSizer)来帮助组织和调整窗口中的控件。了解它们的工作原理和配置方式,可以创建出美观且适应不同屏幕尺寸的界面。 3. **事件处理**:...

    wxPython-demo-4.0.6_wxpython官方demo_wxPython-demo_wxpython_DEMO_w

    【wxPython Demo】是wxPython库附带的一系列示例和教程,用于展示如何使用wxPython的各种控件、布局管理器和其他功能。通过这些演示,开发者可以直观地了解如何创建窗口、按钮、菜单、对话框等元素,并了解它们在...

    wxpython安装包

    7. **应用场景**:wxPython广泛应用于桌面应用开发,例如数据分析工具、科学计算软件、图像编辑器、游戏等。它也常被用来为网络应用添加离线功能,或作为自动化脚本的图形前端。 8. **社区支持**:wxPython拥有活跃...

    游戏地图编辑器 Tile 砖块地图 wxPython

    游戏地图编辑器 Tile 砖块地图 wxPython,一开始考虑不全面,后面写的时候就只有一个心思,烂代码,完成就好。代码创建控件实例是个痛苦的过程,因为做的基本都是重复的事,能用循环的最好写进循环,熟悉控件后推荐...

    wxPython几本好书

    几本很不错的关于python gui的wxPython的书,包括“wxPython in Action(中文版)” 活学活用wxPython “《wxPython in Action》Noel Rappin, Robin Dunn著 2006年版”

    wxPython-入门教程.pdf

    这段代码展示了如何使用wxPython构建一个简单的文本编辑器界面,它包含一个可以输入和查看文本的窗口。通过这样的基础示例,你可以开始理解如何利用wxPython构建更复杂的GUI应用。 总的来说,wxPython为Python...

Global site tag (gtag.js) - Google Analytics