使用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 相关文章推荐
shelve  用来持久化任意的Python对象实例代码
Oct 12 Python
python进程管理工具supervisor的安装与使用教程
Sep 05 Python
python MysqlDb模块安装及其使用详解
Feb 23 Python
python修改txt文件中的某一项方法
Dec 29 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
Jan 30 Python
2019 Python最新面试题及答案16道题
Apr 11 Python
Python3远程监控程序的实现方法
Jul 15 Python
django多种支付、并发订单处理实例代码
Dec 13 Python
Python字典底层实现原理详解
Dec 18 Python
Python终端输出彩色字符方法详解
Feb 11 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
Mar 18 Python
Python使用Web框架Flask开发项目
Jun 01 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写的serv-u的web申请账号的程序
2006/10/09 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
使用PHP如何实现高效安全的ftp服务器(一)
2015/12/20 PHP
IE不出现Flash激活框的小发现的js实现方法
2007/09/07 Javascript
javascript 得到变量类型的函数
2010/05/19 Javascript
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
js返回上一页并刷新的多种实现方法
2014/02/26 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
在html中引入外部js文件,并调用带参函数的方法
2016/10/31 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
2017/03/09 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
javascript 中模板方法单例的实现方法
2017/10/17 Javascript
javascript中UMD规范的代码推演
2018/08/29 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
Python的Django框架中的表单处理示例
2015/07/17 Python
Python tkinter事件高级用法实例
2018/01/31 Python
django 多数据库配置教程
2018/05/30 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
jupyter实现重新加载模块
2020/04/16 Python
python 实现表情识别
2020/11/21 Python
向国旗敬礼学生寄语大全
2014/09/30 职场文书
卖房授权委托书样本
2014/10/05 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
捐款通知怎么写
2015/04/24 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书
大学学生会主席竞选稿怎么写?
2019/08/19 职场文书
Django与数据库交互的实现
2021/06/03 Python
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis