使用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操作MySQL数据库的方法分享
May 29 Python
Python简单进程锁代码实例
Apr 27 Python
Python lxml模块安装教程
Jun 02 Python
Python3编程实现获取阿里云ECS实例及监控的方法
Aug 18 Python
Python设计模式之观察者模式原理与用法详解
Jan 16 Python
简单了解python的一些位运算技巧
Jul 13 Python
如何在django中添加日志功能
Feb 06 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
Mar 06 Python
django 连接数据库出现1045错误的解决方式
May 14 Python
django queryset 去重 .distinct()说明
May 19 Python
matplotlib grid()设置网格线外观的实现
Feb 22 Python
利用Python多线程实现图片下载器
Mar 25 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-MySQL教程归纳总结
2008/06/07 PHP
新手学习PHP的一些基础知识分享
2011/07/27 PHP
Laravel5中contracts详解
2015/03/02 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
JS求平均值的小例子
2013/11/29 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
JavaScript中Object基础内部方法图
2018/02/05 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
微信小程序使用npm支持踩坑
2018/11/07 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
Python实现把utf-8格式的文件转换成gbk格式的文件
2015/01/22 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
python实现QQ批量登录功能
2019/06/19 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
在python中求分布函数相关的包实例
2020/04/15 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
Python基于execjs运行js过程解析
2020/11/27 Python
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
美国眼镜网:GlassesUSA
2017/09/07 全球购物
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
档案接收函
2014/01/13 职场文书
计算机相关专业自荐信
2014/07/02 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
某集团股份有限公司委托书样本
2014/09/24 职场文书
消防宣传语大全
2015/07/13 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers