使用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多进程编程
Jun 12 Python
tensorflow建立一个简单的神经网络的方法
Feb 10 Python
Python使用sort和class实现的多级排序功能示例
Aug 15 Python
python爬取指定微信公众号文章
Dec 20 Python
PyCharm设置每行最大长度限制的方法
Jan 16 Python
Python实现的矩阵转置与矩阵相乘运算示例
Mar 26 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
Jan 09 Python
python实现用类读取文件数据并计算矩形面积
Jan 18 Python
如何将PySpark导入Python的放实现(2种)
Apr 26 Python
完美解决pycharm 不显示代码提示问题
Jun 02 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
Jul 20 Python
Python 制作查询商品历史价格的小工具
Oct 20 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 的ArrayAccess接口 像数组一样来访问你的PHP对象
2010/10/12 PHP
zf框架的registry(注册表)使用示例
2014/03/13 PHP
List Installed Software Features
2007/06/11 Javascript
基于jquery的页面划词搜索JS
2010/09/14 Javascript
js 有框架页面跳转(target)三种情况下的应用
2013/04/09 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
AngularJS表单详解及示例代码
2016/08/17 Javascript
解决前端跨域问题方案汇总
2016/11/20 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
使用原生的javascript来实现轮播图
2017/02/24 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
Angular2关于@angular/cli默认端口号配置的问题
2017/07/15 Javascript
基于Vue框架vux组件库实现上拉刷新功能
2017/11/28 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
压缩包密码破解示例分享(类似典破解)
2014/01/17 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
python实现简单名片管理系统
2018/11/30 Python
python里dict变成list实例方法
2019/06/26 Python
基于tensorflow for循环 while循环案例
2020/06/30 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
2020/11/09 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
2016/04/26 HTML / CSS
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
实习生个人找工作的自我评价
2013/10/30 职场文书
工作失职检讨书范文
2014/01/16 职场文书
新年联欢会主持词
2014/03/27 职场文书
教师个人师德总结
2015/02/06 职场文书
行政前台岗位职责
2015/04/16 职场文书
2015秋季田径运动会广播稿
2015/08/19 职场文书
pytorch 如何使用float64训练
2021/05/24 Python
使用JS实现简易计算器
2021/06/14 Javascript
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis