使用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中由于logging模块误用导致的内存泄露
Apr 23 Python
Python中Collections模块的Counter容器类使用教程
May 31 Python
Python中struct模块对字节流/二进制流的操作教程
Jan 21 Python
PyQt5每天必学之日历控件QCalendarWidget
Apr 19 Python
Django实现全文检索的方法(支持中文)
May 14 Python
Python 面试中 8 个必考问题
Nov 16 Python
Python IDE环境之 新版Pycharm安装详细教程
Mar 05 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
Jun 14 Python
树莓派升级python的具体步骤
Jul 05 Python
Python3如何实现Win10桌面自动切换
Aug 11 Python
Python调用REST API接口的几种方式汇总
Oct 19 Python
python异步的ASGI与Fast Api实现
Jul 16 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中for循环语句的几种变型
2006/11/26 PHP
PHP gbk环境下json_dencode传送来的汉字
2012/11/13 PHP
PHP积分兑换接口实例
2015/02/09 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
Angularjs 实现移动端在线测评效果(推荐)
2017/04/05 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
深入浅析angular和vue还有jquery的区别
2018/08/13 jQuery
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
jQuery AJAX与jQuery事件的分析讲解
2019/02/18 jQuery
Vue服务端渲染实践之Web应用首屏耗时最优化方案
2019/03/22 Javascript
IE11下处理Promise及Vue的单项数据流问题
2019/07/24 Javascript
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
用TensorFlow实现lasso回归和岭回归算法的示例
2018/05/02 Python
Python读写docx文件的方法
2018/05/08 Python
详解python 注释、变量、类型
2018/08/10 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
专门出售各种儿童读物的网站:Put Me In The Story
2016/08/07 全球购物
世界领先的高品质定制产品平台:Zazzle
2017/07/23 全球购物
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
函授自我鉴定
2013/11/06 职场文书
迟到检讨书800字
2014/01/13 职场文书
一月红领巾广播稿
2014/02/11 职场文书
洗发水广告词
2014/03/13 职场文书
竞聘书格式及范文
2014/03/31 职场文书
小学英语课后反思
2014/04/26 职场文书
《恐龙》教学反思
2014/04/27 职场文书
党员作风建设整改方案
2014/10/27 职场文书
导游词之日本富士山
2020/01/06 职场文书