使用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程序设计有所帮助。