使用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实现list反转实例汇总
Nov 11 Python
python使用xmlrpclib模块实现对百度google的ping功能
Jun 02 Python
Python实现可自定义大小的截屏功能
Jan 20 Python
python中实现将多个print输出合成一个数组
Apr 19 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
详解python selenium 爬取网易云音乐歌单名
Mar 28 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 Python
Python文件操作函数用法实例详解
Dec 24 Python
Pytorch训练过程出现nan的解决方式
Jan 02 Python
解决keras backend 越跑越慢问题
Jun 18 Python
Python txt文件常用读写操作代码实例
Aug 03 Python
python中subplot大小的设置步骤
Jun 28 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
深入解析Session是否必须依赖Cookie
2013/08/02 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
2007/03/10 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
javascript中callee与caller的用法和应用场景
2010/12/08 Javascript
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
document.write的几点使用心得
2014/05/14 Javascript
JavaScript中数组slice和splice的对比小结
2016/09/22 Javascript
Angularjs分页查询的实现
2017/02/24 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
基于Vue2.X的路由和钩子函数详解
2018/02/09 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
Javascript call及apply应用场景及实例
2020/08/26 Javascript
Python 处理数据的实例详解
2017/08/10 Python
python的exec、eval使用分析
2017/12/11 Python
Python实现将一个正整数分解质因数的方法分析
2017/12/14 Python
python使用opencv按一定间隔截取视频帧
2018/03/06 Python
python实现Flappy Bird源码
2018/12/24 Python
Python提取频域特征知识点浅析
2019/03/04 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
2019/11/26 Python
python常用运维脚本实例小结
2020/02/14 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
解决python运行启动报错问题
2020/06/01 Python
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
函授大学生自我鉴定
2014/02/05 职场文书
机械操作工岗位职责
2014/08/08 职场文书
民间借贷协议书范本
2014/10/01 职场文书
办公室主任岗位职责
2015/01/31 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
Python的flask接收前台的ajax的post数据和get数据的方法
2021/04/12 Python
5行Python代码实现一键批量扣图
2021/06/29 Python