您好,欢迎访问一九零五行业门户网

Python实现文本编辑器功能实例详解

这篇文章主要介绍了python实现的文本编辑器功能,结合实例形式详细分析了基于wxpython实现文本编辑器所需的功能及相关实现技巧,需要的朋友可以参考下
本文实例讲述了python实现的文本编辑器功能。分享给大家供大家参考,具体如下:
wxpython实现的文本编辑器 效果如下:
主要功能:
1.编辑保存文本,打开修改文本
2.常用快捷键,复制,粘贴,全选等
3.支持撤销功能
4.支持弹出式菜单
代码如下:
#encoding=utf-8 import wx import os class myframe(wx.frame): def init(self): self.file='' self.content=[] self.count=0 self.width=700 self.height=500 wx.frame.init(self,none,-1,u'记事本',size=(self.width,self.height)) self.panel=wx.panel(self,-1) menubar=wx.menubar() menu1=wx.menu() menubar.append(menu1,u'文件') menu1.append(1001,u'打开') menu1.append(1002,u'保存') menu1.append(1003,u'另存为') menu1.append(1004,u'退出') menu2=wx.menu() menubar.append(menu2,u'编辑') menu2.append(2001,u'撤销') menu2.append(2002,u'清空') menu2.append(2003,u'剪切 ctrl + x') menu2.append(2004,u'复制 ctrl + c') menu2.append(2005,u'粘贴 ctrl + v ') menu2.append(2006,u'全选 ctrl + a',) menu=wx.menu() ctrla=menu.append(-1, "\tctrl-a") ctrlc=menu.append(-1, "\tctrl-c") ctrlx=menu.append(-1, "\tctrl-x") ctrlv=menu.append(-1, "\tctrl-v") ctrls=menu.append(-1, "\tctrl-s") menubar.append(menu,'') self.setmenubar(menubar) self.bind(wx.evt_menu, self.onselect, ctrla) self.bind(wx.evt_menu, self.oncopy,ctrlc) self.bind(wx.evt_menu, self.oncut,ctrlc) self.bind(wx.evt_menu, self.onpaste,ctrlv) self.bind(wx.evt_menu, self.ontsave, ctrls) self.bind(wx.evt_menu, self.onopen, id=1001) self.bind(wx.evt_menu, self.onsave, id=1002) self.bind(wx.evt_menu, self.onsaveall, id=1003) self.bind(wx.evt_menu, self.onexit, id=1004) self.bind(wx.evt_menu, self.onback, id=2001) self.bind(wx.evt_menu, self.onclear, id=2002) self.bind(wx.evt_menu, self.oncut, id=2003) self.bind(wx.evt_menu, self.oncopy, id=2004) self.bind(wx.evt_menu, self.onpaste, id=2005) self.bind(wx.evt_menu, self.onselect, id=2006) self.bind(wx.evt_size, self.onresize) new=wx.image('./icons/new.png',wx.bitmap_type_png).converttobitmap() open=wx.image('./icons/open.png',wx.bitmap_type_png).converttobitmap() exit=wx.image('./icons/exit.png',wx.bitmap_type_png).converttobitmap() save=wx.image('./icons/save.png',wx.bitmap_type_png).converttobitmap() saveall=wx.image('./icons/saveall.png',wx.bitmap_type_png).converttobitmap() back=wx.image('./icons/back.png',wx.bitmap_type_png).converttobitmap() go=wx.image('./icons/go.png',wx.bitmap_type_png).converttobitmap() clear=wx.image('./icons/clear.png',wx.bitmap_type_png).converttobitmap() toolbar=self.createtoolbar(wx.tb_horizontal|wx.tb_text) toolbar.addsimpletool(100,new,'new') toolbar.addsimpletool(200,open,'open') toolbar.addsimpletool(300,exit,'exit') toolbar.addsimpletool(400,save,'save') toolbar.addsimpletool(500,saveall,'save all') toolbar.addsimpletool(600,back,'back') toolbar.addsimpletool(700,go,'go') toolbar.addsimpletool(800,clear,'clear') toolbar.realize() self.bind(wx.evt_tool,self.ontopen,id=200) self.bind(wx.evt_tool,self.ontexit,id=300) self.bind(wx.evt_tool,self.ontsave,id=400) self.bind(wx.evt_tool,self.ontback,id=600) self.bind(wx.evt_tool,self.ontgo,id=700) self.bind(wx.evt_tool,self.ontclear,id=800) self.text=wx.textctrl(self.panel,-1,pos=(2,2),size=(self.width-10,self.height-50), style=wx.hscroll|wx.te_multiline) self.popupmenu = wx.menu()#创建一个菜单 for text in "cut copy paste selectall".split():#填充菜单 item = self.popupmenu.append(-1, text) self.bind(wx.evt_menu, self.onpopupitemselected, item) self.panel.bind(wx.evt_context_menu, self.onshowpopup)#绑定一个显示菜单事件 def onshowpopup(self, event):#弹出显示 pos = event.getposition() pos = self.panel.screentoclient(pos) self.panel.popupmenu(self.popupmenu, pos) def onpopupitemselected(self, event): item = self.popupmenu.finditembyid(event.getid()) text = item.gettext() if text=='cut': self.oncut(event) elif text=='copy': self.oncopy(event) elif text=='paste': self.onpaste(event) elif text=='selectall': self.onselect(event) def onopen(self,event): filterfile=" all files (*.*) |*.*" opendialog=wx.filedialog(self,u"选择文件",os.getcwd(),"",filterfile,wx.open) if opendialog.showmodal()==wx.id_ok: self.file=opendialog.getpath() f=open(self.file) self.text.write(f.read()) f.close() opendialog.destroy() def ontopen(self,event): filterfile="all files (*.*) |*.*" opendialog=wx.filedialog(self,u"选择文件",os.getcwd(),"",filterfile,wx.open) if opendialog.showmodal()==wx.id_ok: self.file=opendialog.getpath() f=open(self.file) self.text.write(f.read()) f.close() self.content.append(self.text.getvalue()) opendialog.destroy() def onsave(self,event): filterfile="all files (*.*) |*.*" opendialog=wx.filedialog(self,u'保存文件',os.getcwd(),"",filterfile,wx.save) if opendialog.showmodal()==wx.id_ok: self.file=opendialog.getpath() self.text.savefile(self.file) def ontsave(self,event): if self.file == '': filterfile="all files (*.*) |*.*" opendialog=wx.filedialog(self,u'保存文件',os.getcwd(),"",filterfile,wx.save) if opendialog.showmodal()==wx.id_ok: self.file=opendialog.getpath() self.text.savefile(self.file) self.content.append(self.text.getvalue()) self.count=self.count+1 else: self.text.savefile(self.file) self.content.append(self.text.getvalue()) self.count=self.count+1 def onsaveall(self,event): pass def onexit(self,event): self.close() def ontexit(self,event): self.close() def onback(self,event): self.text.undo() def ontback(self,event): try: self.count=self.count-1 self.text.setvalue(self.content[self.count]) except indexerror: self.count=0 def ontgo(self,event): try: self.count=self.count+1 self.text.setvalue(self.content[self.count]) except indexerror: self.count=len(self.content)-1 def onclear(self,event): self.text.clear() def ontclear(self,event): self.text.clear() def oncut(self,event): self.text.cut() def oncopy(self,event): self.text.copy() def onpaste(self,event): self.text.paste() def onselect(self,event): self.text.selectall() def onresize(self,event): newsize=self.getsize() width=newsize.getwidth()-10 height=newsize.getheight()-50 self.text.setsize((width,height)) self.text.refresh() if name=='main': app=wx.app() myframe=myframe() myframe.show() app.mainloop()
以上就是python实现文本编辑器功能实例详解的详细内容。
其它类似信息

推荐信息