python记事本实现查询替换
python 大作业 自己写了记事本 也参考网上的 查询会有点问题 替换没问题
# encoding=utf-
from tkinter import *
from tkinter.filedialog import *
from tkinter.messagebox import *
import os '''打开文件的功能目前不是很完善''' filename = '' def author():
showinfo('helo', '儿子') def power():
showinfo('版权信息', '爸爸') def myopen():
global filename
filename = askopenfilename(defaultextension='.txt')
if filename == '':
filename = None
else:
root.title('linlin-note' + os.path.basename(filename))
textPad.delete(1.0, END)
f = open(filename, 'r')
textPad.insert(1.0, f.read())
f.close() def new():
global root, filename, textPad
root.title('未命名文件')
filename = None
textPad.delete(1.0, END) def save():
global filename
try:
f = open(filename, 'w')
msg = textPad.get(1.0, 'end')
f.write(msg)
f.close()
except:
saveas() def saveas():
f = asksaveasfilename(initialfile='未命名.txt', defaultextension='.txt')
global filename
filename = f
fh = open(f, 'w')
msg = textPad.get(1.0, END)
fh.write(msg)
fh.close
root.title('linlin 记事本' + os.path.basename(f)) def cut():
global textPad
textPad.event_generate('<<Cht>>') def copy():
global textPad
textPad.event_generate('<<Copy>>') def paste():
global textPad
textPad.event_generate('<<Paste>>') def undo():
global textPad
textPad.event_generate('<<Undo>>') def redo():
global textPad
textPad.event_generate('<<Redo>>') def select_all():
global textPad
textPad.event_generate('sel', '1.0', 'end') def find():
global root
t = Toplevel(root)
t.title('查找')
# 设置窗口大小
t.geometry('290x70+200+250')
t.transient(root)
v1=StringVar()
Label(t, text='查找/替换:').grid(row=, column=, sticky='e')
Label(t, text='替换文本:').grid(row=, column=)
Entry(t, width=,textvariable=v1).grid(row=, column= ) v = StringVar()
e = Entry(t, width=, textvariable=v)#替换 e.grid(row=, column=, padx=, pady=, sticky='we')
e.focus_set()
c = IntVar() #Checkbutton(t, text='不区分大小写', variable=c).grid(row=, column=, sticky='e')
Button(t, text='查找所有', command=lambda: search(v.get(), c.get(), textPad, t, e)).grid(row=, column=,sticky='e' + 'w', padx=,pady=)
Button(t, text='替换所有', command=lambda: mytihuan(v1.get(),v.get())).grid(row=, column=, padx=,pady=)
#tihuantext = Text(t, width=, height=) def close_search():
textPad.tag_remove('match', '1.0', END)
t.destroy() t.protocol('WM_DELETE_WINDOW', close_search) def mytihuan(tihuanwenben,yuanshiwenben):
showinfo('helo', "替换成功")
find_data = yuanshiwenben.strip()
replace_data =tihuanwenben.strip()
data = textPad.get(1.0,END)
print("finddata"+find_data)
data = data.replace(find_data, replace_data)
textPad.delete(1.0,END)
textPad.insert(1.0,data)
#textPad.mark_set(data) def search(needle, cssnstv, textPad, t, e):
textPad.tag_remove('match', '1.0', END)
count =
if needle:
pos = '1.0'
while True:
pos = textPad.search(needle, pos, nocase=cssnstv, stopindex=END)
if not pos: break
#lastpos=
lastpos = pos + str(len(needle))
#print(str(len(needle))+"-----"+needle)
textPad.tag_add('match', pos, lastpos)
count +=
pos = lastpos
textPad.tag_config('match', foreground='yellow', background='green')
e.focus_set()
t.title(str(count) + '个被匹配') def popup(event):
global editmenu
editmenu.tk_popup(event.x_root, event.y_root) root = Tk()
root.title('记事本')
root.geometry('800x800+100+100')
menubar = Menu(root) filemenu = Menu(menubar,tearoff=False)#等于false 不显示上面的-------
filemenu.add_command(label='新建', accelerator='Ctrl+N', command=new)
filemenu.add_command(label='打开', accelerator='Ctrl+O', command=myopen)
filemenu.add_command(label='保存', accelerator='Ctrl+S', command=save)
filemenu.add_command(label='另存为', accelerator='Ctrl+Shift+S', command=saveas)
menubar.add_cascade(label='文件', menu=filemenu) editmenu = Menu(menubar,tearoff=False)#等于false 不显示上面的-------
editmenu.add_command(label='撤销', accelerator='Ctrl+Z', command=undo)
editmenu.add_command(label='重做', accelerator='Ctrl+Y', command=redo)
editmenu.add_separator()
editmenu.add_command(label='剪切', accelerator='Ctrl+X', command=cut)
editmenu.add_command(label='复制', accelerator='Ctrl+C', command=copy)
editmenu.add_command(label='粘贴', accelerator='Ctrl+V', command=paste)
editmenu.add_separator()
editmenu.add_command(label='查找/替换', accelerator='Ctrl+F', command=find)
editmenu.add_command(label='全选', accelerator='Ctrl+A', command=select_all)
menubar.add_cascade(label='编辑', menu=editmenu) aboutmenu = Menu(menubar,tearoff=False)#等于false 不显示上面的-------
aboutmenu.add_command(label='作者', command=author)
aboutmenu.add_command(label='版权', command=power)
menubar.add_cascade(label='关于', menu=aboutmenu) root.config(menu=menubar)
# root['menu'] = menubar # shortcutbar = Frame(root, height=, bg='light sea green')
# shortcutbar.pack(expand=NO, fill=X)
# lnlabel = Label(root, width=, bg='antique white')
# lnlabel.pack(side=LEFT, anchor='nw', fill=Y) textPad = Text(root, width=, height=, selectforeground="black", undo=True, font=)
textPad.pack(expand=YES, fill=BOTH)
scroll = Scrollbar(textPad)
textPad.config(yscrollcommand=scroll.set)
scroll.config(command=textPad.yview)
scroll.pack(side=RIGHT, fill=Y)
textPad.bind('<Control-N>', new)
textPad.bind('<Control-n>', new)
textPad.bind('<Control-O>', myopen)
textPad.bind('<Control-o>', myopen)
textPad.bind('<Control-S>', save)
textPad.bind('<Control-s>', save)
textPad.bind('<Control-A>', select_all)
textPad.bind('<Control-a>', select_all)
textPad.bind('<Control-F>', find)
textPad.bind('<Control-f>', find)
textPad.bind('<Button-3>', popup)
root.mainloop()
python记事本实现查询替换的更多相关文章
- python字符串截取与替换的例子
python字符串截取与替换的多种方法 时间:2016-03-12 20:08:14来源:网络 导读:python字符串截取与替换的多种方法,以冒号分隔的字符串的截取方法,python字符串替换方法, ...
- 用Python将绝对URL替换成相对URL的代码
下面的内容内容是关于用Python将绝对URL替换成相对URL的内容,应该是对码农有些用途. #!/usr/bin/env python### author : cold night# email : ...
- Linux批量查询替换字符串
Linux 批量查询替换文本文件中的字符串: 1.批量查找某个目下文件的包含的内容,例如: # grep -rn "要找查找的文本" ./ 2.批量查找并替换文件内容. # ...
- PHPStorm 使用正则批量查询替换并自动转换大小写的方法
PHPStorm 的项目查询替换功能那是非常非常强大的, 速度也很快, 配合正则更加灵活强大. 一般的正则查询替换没什么太多好说的, 这里主要说说比较少用的 大小写自动转换的问题, 也是比较少用但很有 ...
- python 连接数据库,查询结果写入数据到excel
使用Python链接数据库查询数据,并将查询结果写入到Excel中,实现方法上主要有两步,第一,查数据,第二,写Excel. 一.导入需要的包 import time import xlwt from ...
- Python实现单词查询&文件查找
最近学C++ Primer,做到第十二章有个习题.要求针对英文文本,对于用户想搜索的单词,打印出该单词在文本中出现的总次数,单词所出现行号及对应的行内容:单词在一行内出现多次,只打印该行一次.C++的 ...
- Python 实现火车票查询工具
注意:由于 12306 的接口经常变化,课程内容可能很快过期,如果遇到接口问题,需要根据最新的接口对代码进行适当修改才可以完成实验. 一.实验简介 当你想查询一下火车票信息的时候,你还在上 12306 ...
- pythonのsqlalchemy简单查询
#!/usr/bin/env python import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.dec ...
- python 小程序,替换文件中的字符串
[root@PythonPC ~]# cat passwd root:x:::root:/root:/bin/bash bin:x:::bin:/bin:/sbin/nologin daemon:x: ...
随机推荐
- CF1285D Dr. Evil Underscores
挂个链接 Description: 给你 \(n\) 个数 \(a_1,a_2,--,a_n\) ,让你找出一个 \(x\) ,使 \(x\) 分别异或每一个数后得到的 \(n\) 个结果的最大值最小 ...
- 为Docker Desktop安装kubernet-dashboard
在上一篇,在windows上,用最简方法(比其他的脚本法,提前拉取镜像简便太多了)安装好了docker desktop,并启用了内置的kubernetes. 这种安装方法实际上是在Hyper-v虚拟机 ...
- maven缺失ojdbc6解决方案 :Missing artifact com.oracle:ojdbc6:jar:11.2.0.1.0问题解决 ojdbc包pom.xml出错
问题已解决,感谢博主,给您磕头了. | | 解决方法就是把缺少的 jar 手动添加到本地仓库中,再重新引入依赖即可.详情请参考以下链接. | | 转发自: https://blog.csdn.net/ ...
- Python 基础之函数的嵌套与nonlocal修改局部变量及闭包函数
一.函数的嵌套 嵌套在外层,称之为外函数 嵌套在里层,称之为内函数#例:def outer(): def inner(): print("I'm inner") ...
- 115、Java中String类之使用concat进行字符串连接
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- Windows xp Diskpart合并分区的方法
非常不错的合并分区的方法,经测试,好用,就是对于稳定性就不知道了,理论下应该没什么问题,对于个人电脑合并分区和服务器分区合并来说,无疑是一个非常好的办法 分区增容就是当一个分区的空间不能满足使 ...
- C语言结构体指针(指向结构体的指针)详解
C语言结构体指针详解 一.前言 一个指向结构体的变量的指针表示的是这个结构体变量占内存中的起始位置,同样它也可以指向结构体变量数组. *a).b 等价于 a->b. "."一 ...
- 【AOP】在Aspect中无法获取实现类方法的注解
问题 MethodSignature methodSignature = (MethodSignature) (joinPoint.getSignature()); Method method = m ...
- JuJu Beta Postmortem
JuJu demo demo 项目github地址 JuJu 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 完成基于Julia语言的NER mod ...
- 【剑指Offer面试编程题】题目1520:树的子结构--九度OJ
题目描述: 输入两颗二叉树A,B,判断B是不是A的子结构. 输入: 输入可能包含多个测试样例,输入以EOF结束. 对于每个测试案例,输入的第一行一个整数n,m(1<=n<=1000,1&l ...