使用python3.5仿微软记事本notepad


Posted in Python onJune 15, 2016

本文实例为大家分享了python3.5仿微软记事本的具体代码,供大家参考,具体内容如下

from tkinter import filedialog
import tkinter as tk
import tkinter.scrolledtext as tkst
from tkinter import messagebox
import fileinput
from tkinter import *
from os import *
import os
import time
 
t1 = []
root = None
 
def die():
 root.destroy()
 
def about():
 messagebox.showinfo(title = "当前版本为1.0,欢迎使用",message = "**作者:韩东\n**状态:继续努力ing")
class editor:
 def __init__(self,rt):
  if rt == None:
   self.t = tk.Tk()
  else:
   self.t = tk.Toplevel(rt)
  self.t.title("文本编辑器%d" % (len(t1)+1))
  self.bar = tk.Menu(rt)
 
  self.filem = tk.Menu(self.bar)
  self.filem.add_separator()
  self.filem.add_command(label = "新建",command = self.neweditor)
  self.filem.add_separator()
  self.filem.add_command(label = "打开",command = self.openfile)
  self.filem.add_separator()
  self.filem.add_command(label = "保存",command = self.savefile)
  self.filem.add_separator()
  self.filem.add_command(label = "关闭",command = self.close)
  self.filem.add_separator()
  self.filem.add_command(label = "退出",command = die)
 
  self.editm = tk.Menu(self.bar)
  self.editm.add_separator()
  self.editm.add_command(label = "复制",command = self.copy)
  self.editm.add_separator()
  self.editm.add_command(label = "黏贴",command = self.paste)
  self.editm.add_separator()
  self.editm.add_command(label = "剪切",command = self.cut)
  self.editm.add_separator()
  self.editm.add_command(label = "删除",command = self.delete_text)
  self.editm.add_separator()
  self.editm.add_command(label = "查找",command = self.find_char)
  self.editm.add_separator()
  self.editm.add_command(label = "全选",command = self.select_char_all)
 
 
  self.helpm = tk.Menu(self.bar)
  self.helpm.add_command(label = "关于",command = about)
  self.bar.add_cascade(label = "文件",menu = self.filem)
  self.bar.add_cascade(label = "编辑",menu = self.editm)
  self.bar.add_cascade(label = "帮助",menu = self.helpm)
   
  self.t.config(menu = self.bar)
 
  self.f = tk.Frame(self.t,width = 512)
  self.f.pack(expand =1)
 
  self.st = tkst.ScrolledText(self.t)
  self.st.pack(expand = 1)
 
 def close(self):
  self.t.destroy()
 def openfile(self):
  oname = filedialog.askopenfilename(filetypes = [("打开文件","*.txt")])
  if oname:
   for line in fileinput.input(oname):
    self.st.insert("1.0",line)
   self.t.title(oname)
 
 def savefile(self):
  sname = filedialog.asksaveasfilename(title = "保存好你的宝宝哟",filetypes = [("保存文件","*.txt")])
  if sname:
   ofp = open(sname,"a")
   ofp.write(self.st.get(1.0,tk.END))
   ofp.flush()
   ofp.close()
   self.t.title(sname)
 
 def neweditor(self):
  global root
  t1.append(editor(root))
 def copy(self):
  text = self.st.get(tk.SEL_FIRST,tk.SEL_LAST)
  self.st.clipboard_clear()
  self.st.clipboard_append(text)
 def paste(self):
  try:
   text = self.st.selection_get(selection = "CLIPBOARD")
   self.st.insert(tk.INSERT,text)
  except tk.TclError:
   pass
   
 def cut(self):
  text = self.st.get(tk.SEL_FIRST,tk.SEL_LAST)
  self.st.delete(tk.SEL_FIRST,tk.SEL_LAST)
  self.st.clipboard_clear()
  self.st.clipboard_append(text)
   
 def delete_text(self):
  self.st.delete(tk.SEL_FIRST,tk.SEL_LAST)
 
 def find_char(self):
  target = simpledialog.askstring("简易文本编辑器","寻找字符串")
  if target:
   end = self.st.index(tk.END)
   endindex = end.split(".")
   end_line = int(endindex[0])
   end_column = int(endindex[1])
   pos_line =1
   pos_column=0
   length =len(target)
   while pos_line <= end_line :
    if pos_line == end_line and pos_column +length > end_column:
     break
    elif pos_line < end_line and pos_column + length >100:
     pos_line = pos_line + 1
     pos_column = 100 - (pos_column + length)
     if pos_column > end_column:
      break
    else:
     pos = str(pos_line)+"."+str(pos_column)
     where = self.st.search(target,pos,tk.END)
     if where:
      print(where)
      where1 =where.split(".")
      sele_end_col = str(int(where1[1])+length)
      sele = where1[0] + "."+ sele_end_col
      self.st.tag_add(tk.SEL,where,sele)
      self.st.mark_set(tk.INSERT,sele)
      self.st.see(tk.INSERT)
      #self.st.focus()
     
      again = messagebox.askokcancel(title = "继续查询么")
      if again:
       pos_line = int(where1[0])
       pos_column = int(sele_end_col)
      else:
       aa=messagebox.showinfo(title = "你终于还是放弃了我",message = "你放弃了我--!")
       if aa:
        sys.exit()
         
 
 def select_char_all(self):
  self.st.tag_add(tk.SEL,1.0,tk.END)
  self.st.see(tk.INSERT)
  self.st.focus()
if __name__ == "__main__":
 root = None
 t1.append(editor(root))
 root = t1[0].t
 root.mainloop()

以上就是本文的全部内容,希望对大家学习python程序设计有所帮助。

Python 相关文章推荐
python文件和目录操作函数小结
Jul 11 Python
解读Python中degrees()方法的使用
May 18 Python
python使用MySQLdb访问mysql数据库的方法
Aug 03 Python
在 Python 应用中使用 MongoDB的方法
Jan 05 Python
python实现上传下载文件功能
Nov 19 Python
python3使用requests模块爬取页面内容的实战演练
Sep 25 Python
对Python3之进程池与回调函数的实例详解
Jan 22 Python
Python集合基本概念与相关操作实例分析
Oct 30 Python
python Jupyter运行时间实例过程解析
Dec 13 Python
基于python 等频分箱qcut问题的解决
Mar 03 Python
浅谈Python协程
Jun 17 Python
pandas.DataFrame.drop_duplicates 用法介绍
Jul 06 Python
python3.5仿微软计算器程序
Mar 30 #Python
Python的Asyncore异步Socket模块及实现端口转发的例子
Jun 14 #Python
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 #Python
Python实现TCP协议下的端口映射功能的脚本程序示例
Jun 14 #Python
浅谈python新手中常见的疑惑及解答
Jun 14 #Python
Python中死锁的形成示例及死锁情况的防止
Jun 14 #Python
实例探究Python以并发方式编写高性能端口扫描器的方法
Jun 14 #Python
You might like
PHP+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
2007/02/15 PHP
PHP获取youku视频真实flv文件地址的方法
2014/12/23 PHP
PHP中文乱码解决方案
2015/03/05 PHP
PHP实现操作redis的封装类完整实例
2015/11/14 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
微信小程序 wxapp内容组件 progress详细介绍
2016/10/31 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
vue实现滑动超出指定距离回顶部功能
2019/07/31 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
react PropTypes校验传递的值操作示例
2020/04/28 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
Python正规则表达式学习指南
2016/08/02 Python
解决python2.7用pip安装包时出现错误的问题
2017/01/23 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
pygame实现弹球游戏
2020/04/14 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
英国当代时尚和街头服饰店:18montrose
2018/12/15 全球购物
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
岗位廉政承诺书
2014/03/27 职场文书
技校毕业生自荐信
2014/06/03 职场文书
新教师个人总结
2015/02/06 职场文书
2015年妇幼保健工作总结
2015/05/19 职场文书
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS
table不让td文字溢出操作方法
2022/12/24 HTML / CSS