下边资料是关于python通过Tkinter库实现的一个简单的文本编辑器的内容。

from tkSimpleDialog import askstring

from tkFileDialog import asksaveasfilename

from tkMessageBox import askokcancel

class Quitter(Frame):

def __init__(self, parent=None):

Frame.__init__(self, parent)

self.pack()

widget = Button(self, text='Quit', command=self.quit)

widget.pack(expand=YES, fill=BOTH, side=LEFT)

def quit(self):

ans = askokcancel('Verify exit', "Really quit?")

if ans: Frame.quit(self)

class ScrolledText(Frame):

def __init__(self, parent=None, text='', file=None):

Frame.__init__(self, parent)

self.pack(expand=YES, fill=BOTH)

self.makewidgets()

self.settext(text, file)

def makewidgets(self):

sbar = Scrollbar(self)

text = Text(self, relief=SUNKEN)

sbar.config(command=text.yview)

text.config(yscrollcommand=sbar.set)

sbar.pack(side=RIGHT, fill=Y)

text.pack(side=LEFT, expand=YES, fill=BOTH)

self.text = text

def settext(self, text='', file=None):

if file:

text = open(file, 'r').read()

self.text.delete('1.0', END)

self.text.insert('1.0', text)

self.text.mark_set(INSERT, '1.0')

self.text.focus()

def gettext(self):

return self.text.get('1.0', END+'-1c')

class SimpleEditor(ScrolledText):

def __init__(self, parent=None, file=None):

frm = Frame(parent)

frm.pack(fill=X)

Button(frm, text='Save', command=self.onSave).pack(side=LEFT)

Button(frm, text='Cut', command=self.onCut).pack(side=LEFT)

Button(frm, text='Paste', command=self.onPaste).pack(side=LEFT)

Button(frm, text='Find', command=self.onFind).pack(side=LEFT)

Quitter(frm).pack(side=LEFT)

ScrolledText.__init__(self, parent, file=file)

self.text.config(font=('courier', 9, 'normal'))

def onSave(self):

filename = asksaveasfilename()

if filename:

alltext = self.gettext()

open(filename, 'w').write(alltext)

def onCut(self):

text = self.text.get(SEL_FIRST, SEL_LAST)

self.text.delete(SEL_FIRST, SEL_LAST)

self.clipboard_clear()

self.clipboard_append(text)

def onPaste(self):

try:

text = self.selection_get(selection='CLIPBOARD')

self.text.insert(INSERT, text)

except TclError:

pass

def onFind(self):

target = askstring('SimpleEditor', 'Search String?')

if target:

where = self.text.search(target, INSERT, END)

if where:

print where

pastit = where + ('+%dc' % len(target))

#self.text.tag_remove(SEL, '1.0', END)

self.text.tag_add(SEL, where, pastit)

self.text.mark_set(INSERT, pastit)

self.text.see(INSERT)

self.text.focus()

if __name__ == '__main__':

try:

SimpleEditor(file=sys.argv[1]).mainloop()

except IndexError:

SimpleEditor().mainloop()

python源码编译 带tkinter_python通过Tkinter库实现的一个简单的文本编辑器源码相关推荐

  1. python通过Tkinter库实现的一个简单的文本编辑器源码

    下边资料是关于python通过Tkinter库实现的一个简单的文本编辑器的内容. from tkSimpleDialog import askstring from tkFileDialog impo ...

  2. python实现文本编辑器_Python-tkinter实现简单的文本编辑器

    Python-tkinter实现简单的文本编辑器 利用tkinter实现简单的文本编辑器.创建一个简单的文本编辑器.可以用读文件的方式在一个文本域里显示一些文字供用户编辑. 当用户退出程序时(通过 Q ...

  3. java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署 本源码技 ...

  4. 用Tkinter打造自己的Python IDE开发工具(1)建立一个简单的代码编辑器

    用Tkinter打造自己的Python IDE开发工具(1)建立一个简单的代码编辑器 很多Python初学者,安装完Python后,已经包含了IDLE代码开发和调试系统.都会再安装各种Python开发 ...

  5. 计算机毕业设计Javavue开发一个简单音乐播放器(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Javavue开发一个简单音乐播放器(源码+系统+mysql数据库+lw文档) 计算机毕业设计Javavue开发一个简单音乐播放器(源码+系统+mysql数据库+lw文档) 本源码技术栈 ...

  6. 一个简单的IPmsg程序源码分析(二)

    离上篇一个简单的IPmsg程序源码分析(一)已经基本半个月(上篇最初发布在点点上面,后边纠结了一下还是选择了博客园),利用空闲的时间终于把源码的构架和一些细节基本都搞清楚了,总的来说是很简单的一个客户 ...

  7. 一个简单的文本聚类实现(python)

    具体实现如下,使用python+结巴分词+scikit-learn实现一个简单的文本聚类得到会议室数据,直接从DBA线上数据库得到预约数据,如下所示,共有3列,分别是会议ID,会议标题和会议时间 因为 ...

  8. python源码编译为库_【Python笔记】如何源码编译依赖LAPACK和ATLAS库的NumPy包

    上篇笔记介绍了不依赖lapack和atlas库的NumPy包源码编译/安装方法,但"纯净版"的NumPy会损失性能,故本篇笔记说明如何源码编译安装依赖lapack和atlas库的N ...

  9. python五子棋代码tkinter_python使用tkinter库实现五子棋游戏

    python使用tkinter库实现五子棋游戏 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  python使用tkinter库实现五子棋游戏.txt ] (友情 ...

最新文章

  1. dev schedulercontrol 不显示周_CBA更新伤病报告:丁彦雨航仍需5周 阿联还要休养半年...
  2. Android 7.0 出现 ”FileUriExposedException“ 和 ”解析包出现错误“ 异常的解决办法...
  3. applicationContext.xml 的位置问题
  4. android输入法源码分析,基于Android的输入法的设计与实现.doc
  5. 006---Linux用户、群组和权限
  6. ubuntu 64上的GCC如何编译32位程序
  7. syslog源码_Gunicorn源码分析01--目录结构
  8. figma设计_设计原型的最简单方法:Figma速成课程
  9. JSONModel - 字符串换转实体类
  10. call to member function bind_param() on boolean...........
  11. 双11猫晚直播:看阿里文娱如何“擒住”高并发、多视角、低卡顿!
  12. Java基于Socket文件传输示例(转)
  13. 超酷的 mip-infinitescroll 无限滚动(无限下拉)
  14. ArcGIS 制作林地成分栅格数据
  15. 七种程序员的基本技能
  16. 华为手机打开日志输出的几种方法
  17. NHibernate N+1问题实例分析和优化
  18. 网页扫雷html css js,HTML+CSS+JS实现WIN7扫雷(中)
  19. 人类2100年长啥样?3D建模模拟出来让人惊掉下巴!
  20. I2C完整讲解(二)

热门文章

  1. 【PAT乙级】1037 在霍格沃茨找零钱 (20 分)
  2. Linux之tcpdump
  3. Servlet程序自动加载
  4. CSS设置段落的垂直对齐
  5. 使用qsort对不连续的内存数据排序_数据结构教程_v20201121
  6. dmg文件转换iso ultraiso_mac去除dmg打开密码的方法
  7. 如何生成安全的密码 Hash:MD5, SHA, PBKDF2, BCrypt 示例
  8. java基础之 “==”和“ equals”以及instanceof的区别
  9. 2021-10-11 ! AVL树 及其平衡调整 四种情况 恋上数据结构笔记 (考过)
  10. python语音识别播放音乐_使用python语音识别播放和流式转录音频