看了两天wxPython文档,作为练习简单做了一个简易的文本编辑器。有什么错误用法,希望一二,多谢!
呵呵,实现的功能是很简单的.(新建/打开/保存/另存/剪切/复制/粘贴/全选/删除^_^就这么多,算做simpleEditor beta1.0版吧。以后慢慢补充。)
python 代码:
# simpleEditor.py
-
-
-
- import wx
- from wx.lib.wordwrap import wordwrap
- import wx.richtext as rt
- import os, sys
-
- ID_NEW = wx.NewId()
- ID_OPEN = wx.NewId()
- ID_SAVE = wx.NewId()
- ID_SAVEAS = wx.NewId()
- ID_EXIT = wx.NewId()
- ID_ABOUT = wx.NewId()
- ID_CUT = wx.NewId()
- ID_COPY = wx.NewId()
- ID_PASTE = wx.NewId()
- ID_SELECT = wx.NewId()
- ID_CLEAR = wx.NewId()
-
- wildcard = "Python source (*.py)|*.py|"
-
- class SimpleEditor(wx.Frame):
-
- cur_file = ''
-
- def __init__(self, parent, id, title):
- wx.Frame.__init__(self, parent, id, title, size=(1024, 768))
-
-
- edit_area = wx.TextCtrl(self, -1, style=wx.TE_MULTILINE)
- self.text = edit_area
- wx.CallAfter(self.text.SetFocus)
-
-
- self.CreateStatusBar()
- self.SetStatusText('Here display operate status.')
-
- menubar = wx.MenuBar(wx.MB_DOCKABLE)
-
- file = wx.Menu()
- edit = wx.Menu()
- help = wx.Menu()
-
- file.Append(ID_NEW, '&New\tCtrl+N', 'Create a new File')
- file.Append(ID_OPEN, '&Open\tCtrl+O', 'Open a File')
- file.Append(ID_SAVE, '&Save\tCtrl+S', 'Save a File')
- file.Append(ID_SAVEAS, '&Save As\tShift+Ctrl+S', 'Save as a File')
- file.AppendSeparator()
- file.Append(ID_EXIT, 'E&xit\tCtrl+W', 'Exit Current window')
-
- edit.Append(ID_CUT, '&Cut\tCtrl+X', 'Cut select text')
- edit.Append(ID_COPY, '&Copy\tCtrl+C', 'Copy select text')
- edit.Append(ID_PASTE, '&Paste\tCtrl+V', 'Paste clipboard text')
- edit.AppendSeparator()
- edit.Append(ID_SELECT, '&Select All\tCtrl+A', 'Select all')
- edit.Append(ID_CLEAR, '&Clear\tCtrl+D', 'delete select text')
-
- help.Append(ID_ABOUT, '&About Simple Editor', 'Simple Editor Message')
- menubar.Append(file, '&File')
- menubar.Append(edit, '&Edit')
- menubar.Append(help, '&Help')
- self.Bind(wx.EVT_MENU, self.OnOpen, id=ID_OPEN)
- self.Bind(wx.EVT_MENU, self.OnSave, id=ID_SAVE)
- self.Bind(wx.EVT_MENU, self.OnSaveAs, id=ID_SAVEAS)
- self.Bind(wx.EVT_MENU, self.OnExit, id=ID_EXIT)
- self.Bind(wx.EVT_MENU, self.OnAbout, id=ID_ABOUT)
- self.Bind(wx.EVT_MENU, self.OnCut, id=ID_CUT)
- self.Bind(wx.EVT_MENU, self.OnCopy, id=ID_COPY)
- self.Bind(wx.EVT_MENU, self.OnSelectAll, id=ID_SELECT)
- self.Bind(wx.EVT_MENU, self.OnClear, id=ID_CLEAR)
- self.Bind(wx.EVT_MENU, self.OnPaste, id=ID_PASTE)
-
-
- self.SetMenuBar(menubar)
-
- toolbar = self.CreateToolBar(wx.TB_HORIZONTAL | wx.NO_BORDER
- | wx.TB_FLAT | wx.TB_TEXT)
- toolbar.AddLabelTool(ID_NEW, '', wx.Bitmap('icons/new.gif'))
- toolbar.AddLabelTool(ID_OPEN, '', wx.Bitmap('icons/open.gif'))
- toolbar.AddLabelTool(ID_SAVE, '', wx.Bitmap('icons/save.gif'))
-
-
- def OnOpen(self, event):
- dlg = wx.FileDialog(
- self, message="Choose a file", defaultDir=os.getcwd(),
- defaultFile="", wildcard="All files (*.*)|*.*",
- style=wx.OPEN | wx.MULTIPLE | wx.CHANGE_DIR
- )
- if dlg.ShowModal() == wx.ID_OK:
-
-
- path = dlg.GetPath()
- if path:
- self.cur_file = path
-
- self.text.LoadFile(path, rt.RICHTEXT_TYPE_TEXT)
- dlg.Destroy()
-
- def OnSave(self, event):
- cur_content = self.text.GetValue()
- if not self.cur_file:
-
- dlg = wx.FileDialog(
- self, message="Save file as ...", defaultDir=os.getcwd(),
- defaultFile="", wildcard="*.*", style=wx.SAVE
- )
- if dlg.ShowModal() == wx.ID_OK:
- self.cur_file = dlg.GetPath()
- else: pass
- if self.cur_file:
- fp = open(self.cur_file, 'w')
- fp.write(cur_content)
- fp.close()
-
- def OnSaveAs(self, event):
- dlg = wx.FileDialog(
- self, "Choose a filename", wildcard="All files (*.*)|*.*",
- style=wx.SAVE)
- if dlg.ShowModal() == wx.ID_OK:
- path = dlg.GetPath()
- if path:
-
- self.cur_file = path
- fp = open(path, 'w')
- fp.write(self.text.GetValue())
- fp.close()
- dlg.Destroy()
-
- def OnExit(self, event):
- self.Close(True)
-
- def OnCut(self, event):
-
- self.text.Cut()
-
- def OnCopy(self, event):
-
- self.text.Copy()
-
- def OnPaste(self, event):
-
- self.text.Paste()
-
- def OnSelectAll(self, event):
-
- self.text.SelectAll()
-
- def OnClear(self, event):
-
-
- start,end = self.text.GetSelection()
- self.text.Remove(start, end)
-
-
- def OnAbout(self, event):
-
- info = wx.AboutDialogInfo()
- info.Name = "Simple Editor"
- info.Version = "beta 1.0"
- info.Copyright = "(C) 2008 Programmers and Coders Everywhere"
-
- info.Description = wordwrap(
- "A \"hello world\" program is a software program that prints out "
- "\"Hello world!\" on a display device. It is used in many introductory "
- "tutorials for teaching a programming language."
-
- "\n\nSuch a program is typically one of the simplest programs possible "
- "in a computer language. A \"hello world\" program can be a useful "
- "sanity test to make sure that a language's compiler, development "
- "environment, and run-time environment are correctly installed.",
- 350, wx.ClientDC(self))
- info.WebSite = ("http://www.bobo.com.cn", "BOBO VIDEO")
- info.Developers = ["Purpen"]
-
- wx.AboutBox(info)
-
- class RunApp(wx.App):
- def OnInit(self):
- win = SimpleEditor(None, 1, 'SimpleEditor')
- self.SetTopWindow(win)
- win.Show(True)
- return True
-
- if __name__ == '__main__':
- RunApp().MainLoop()
下载可以直接在命令行下运行(当然,环境一定要支持)。
分享到:
相关推荐
2024年第一季度,青岛房地产市场经历了显著变化,总体呈现供需双降的趋势。一季度全市商品房新增10,721套,面积约152.04万平方米,同比下降29%;销量为14,936套,面积约200.85万平方米,同比下降38%,成交均价为14,204元/平方米,同比下降2%。土地市场方面,供应总量为39万平方米,同比减少7%,但成交面积为27万平方米,同比增长31%,楼面地价为6,625元/平方米,同比增长253%,土地出让金为17.61亿元,同比增长354%。二手房市场新增挂牌2.9万套,成交13,405套,132.21万平方米,累计挂牌51.70万套,挂牌均价17,800元/平方米。此外,青岛市出台多项政策支持房地产市场平稳健康发展,包括降低房贷利率、优化开发用地土地规划政策、支持房企融资等。这些政策旨在促进市场供需平衡,防止市场大起大落。
linux常用命令大全
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
空调销售网站策划案例.doc
全球6G技术大会2024年以用户为中心的6G接入网技术研究白皮书31页.pdf
简约专业风格毕业答辩模板是一系列专为追求简洁与高效表达的大学生设计的答辩文档模板,共47个。这些模板融合了经典的设计元素与现代审美,强调信息的清晰传递与视觉的整洁,旨在帮助学生在答辩中以最专业的面貌展示自己的研究成果。 每个模板都具备结构合理的布局,适用于各个学科和研究领域,从人文社科到自然科学,均能满足不同需求。简约风格的设计使得学生能够专注于内容本身,避免冗余信息的干扰,提升答辩的专业性和可信度。此外,模板中合理运用的色彩、字体和图表设计,不仅增强了视觉吸引力,也使信息更易于理解。 通过使用这些简约专业风格的毕业答辩模板,毕业生能够自信地呈现自己的学术成果,提升答辩的整体效果,为成功的学术交流打下坚实基础。这些模板是展示个人研究与风格的理想选择。
由 Epsilon Luoo 在 HC3-Chinese 的基础上进行了一些细微的修改和清洗
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 你是否渴望高效解决复杂的数学计算、数据分析难题?MATLAB 就是你的得力助手!作为一款强大的技术计算软件,MATLAB 集数值分析、矩阵运算、信号处理等多功能于一身,广泛应用于工程、科学研究等众多领域。 其简洁直观的编程环境,让代码编写如同行云流水。丰富的函数库和工具箱,为你节省大量时间和精力。无论是新手入门,还是资深专家,都能借助 MATLAB 挖掘数据背后的价值,创新科技成果。别再犹豫,拥抱 MATLAB,开启你的科技探索之旅!
HI3519DV500 配置无线网依赖库以及编译脚本
资源说明; 1-----刷写前提是手机必须解锁bl先。而且会在fast模式刷写固件 2-----刷写方法与官方刷写步骤一样 3-----此固件为定制初始固件。可以在fast模式刷写 4-----属于适配固件。也许有个别bug。不接受请勿下载 5-----需要一定的刷机常识与动手能力的友友刷写。 6-----资源有可复制性。下载后不支持退。请知悉 7-----定制其他需求可以在csdn私信博主 博文参阅:https://csdn9.blog.csdn.net/article/details/143058308
Matlab领域上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
世邦魏理仕:2021年西安房地产市场回顾与2022年展望
Android Studio 2022.1.1和java编程语言yinyuebofangqi
C知道对话分享图片
png-jpg-gif-webp-tiff等图片压缩工具基于nodejs的实现,绿色本地免安装,解压后运行exe文件,将图片文件或者包含图片的文件夹拖拽到软件界面即可压缩
我们要了解什么是DSP(Digital Signal Processing)。DSP即数字信号处理,是一种利用数字计算方法对信号进行分析、变换和操作的技术。在汽车音响领域,DSP被广泛应用于改善音质,通过调整频率响应、延时、相位和增益等参数,使声音更加均衡、立体。 惠威是一款数字信号处理器,适用于那些希望升级原车音响系统但预算有限的用户。它通常拥有多个输入和输出接口,可以连接到汽车的音频源和扬声器,通过软件进行调音,使得声音能够适应不同的驾驶环境和听音偏好。 ,集成了先进的噪声抑制技术和强大的功率放大器,旨在为发烧友级别的车载音响系统提供卓越的性能。用户可以通过软件对整个系统的每一个细节进行优化,包括主动分频、时间校正等,以达到Hi-Fi级别的音乐享受。
通信工程分包合同.docx
demo1(1).py
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 你是否渴望高效解决复杂的数学计算、数据分析难题?MATLAB 就是你的得力助手!作为一款强大的技术计算软件,MATLAB 集数值分析、矩阵运算、信号处理等多功能于一身,广泛应用于工程、科学研究等众多领域。 其简洁直观的编程环境,让代码编写如同行云流水。丰富的函数库和工具箱,为你节省大量时间和精力。无论是新手入门,还是资深专家,都能借助 MATLAB 挖掘数据背后的价值,创新科技成果。别再犹豫,拥抱 MATLAB,开启你的科技探索之旅!