使用python3.5仿微软记事本notepad
本文实例为大家分享了python3.5仿微软记事本的具体代码,供大家参考,具体内容如下
fromtkinterimportfiledialog
importtkinterastk
importtkinter.scrolledtextastkst
fromtkinterimportmessagebox
importfileinput
fromtkinterimport*
fromosimport*
importos
importtime
t1=[]
root=None
defdie():
root.destroy()
defabout():
messagebox.showinfo(title="当前版本为1.0,欢迎使用",message="**作者:韩东\n**状态:继续努力ing")
classeditor:
def__init__(self,rt):
ifrt==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)
defclose(self):
self.t.destroy()
defopenfile(self):
oname=filedialog.askopenfilename(filetypes=[("打开文件","*.txt")])
ifoname:
forlineinfileinput.input(oname):
self.st.insert("1.0",line)
self.t.title(oname)
defsavefile(self):
sname=filedialog.asksaveasfilename(title="保存好你的宝宝哟",filetypes=[("保存文件","*.txt")])
ifsname:
ofp=open(sname,"a")
ofp.write(self.st.get(1.0,tk.END))
ofp.flush()
ofp.close()
self.t.title(sname)
defneweditor(self):
globalroot
t1.append(editor(root))
defcopy(self):
text=self.st.get(tk.SEL_FIRST,tk.SEL_LAST)
self.st.clipboard_clear()
self.st.clipboard_append(text)
defpaste(self):
try:
text=self.st.selection_get(selection="CLIPBOARD")
self.st.insert(tk.INSERT,text)
excepttk.TclError:
pass
defcut(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)
defdelete_text(self):
self.st.delete(tk.SEL_FIRST,tk.SEL_LAST)
deffind_char(self):
target=simpledialog.askstring("简易文本编辑器","寻找字符串")
iftarget:
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)
whilepos_line<=end_line:
ifpos_line==end_lineandpos_column+length>end_column:
break
elifpos_line<end_lineandpos_column+length>100:
pos_line=pos_line+1
pos_column=100-(pos_column+length)
ifpos_column>end_column:
break
else:
pos=str(pos_line)+"."+str(pos_column)
where=self.st.search(target,pos,tk.END)
ifwhere:
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="继续查询么")
ifagain:
pos_line=int(where1[0])
pos_column=int(sele_end_col)
else:
aa=messagebox.showinfo(title="你终于还是放弃了我",message="你放弃了我--!")
ifaa:
sys.exit()
defselect_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程序设计有所帮助。