使用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中字典(dict)和列表(list)的排序方法实例
Jun 16 Python
python学习数据结构实例代码
May 11 Python
Phantomjs抓取渲染JS后的网页(Python代码)
May 13 Python
Python中取整的几种方法小结
Jan 06 Python
Python搭建HTTP服务器和FTP服务器
Mar 09 Python
Python实现的购物车功能示例
Feb 11 Python
python读取和保存视频文件
Apr 16 Python
Django中日期处理注意事项与自定义时间格式转换详解
Aug 06 Python
python suds访问webservice服务实现
Jun 26 Python
基于python实现删除指定文件类型
Jul 21 Python
Python 捕获代码中所有异常的方法
Aug 03 Python
Python爬取某平台短视频的方法
Feb 08 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
ThinkPHP采用模块和操作分析
2011/04/18 PHP
PHP清除数组中所有字符串两端空格的方法
2014/10/20 PHP
Joomla数据库操作之JFactory::getDBO用法
2016/05/05 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
浅析用prototype定义自己的方法
2013/11/14 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
JS比较2个日期间隔的示例代码
2014/04/15 Javascript
jQuery $.each遍历对象、数组用法实例
2015/04/16 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
Python使用os模块和fileinput模块来操作文件目录
2016/01/19 Python
Python数据类型详解(四)字典:dict
2016/05/12 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
对Python2与Python3中__bool__方法的差异详解
2018/11/01 Python
在django中,关于session的通用设置方法
2019/08/06 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
2019/08/08 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
基于python实现matlab filter函数过程详解
2020/06/08 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
意大利折扣和优惠券网站:Groupalia
2019/10/09 全球购物
淘宝店铺营销方案
2014/02/13 职场文书
文明演讲稿范文
2014/05/12 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
投资意向协议书
2015/01/29 职场文书
学校运动会简讯
2015/07/20 职场文书