使用python3.5仿微軟記事本notepad
更新時間:2016年06月15日 09:47:55 作者:jinx88
這篇文章主要為大家詳細(xì)介紹了使用python3.5仿微軟記事本notepad的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了python3.5仿微軟記事本的具體代碼,供大家參考,具體內(nèi)容如下
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 = "當(dāng)前版本為1.0,歡迎使用",message = "**作者:韓東\n**狀態(tài):繼續(xù)努力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 = "關(guān)閉",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 = "復(fù)制",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 = "關(guān)于",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 = "繼續(xù)查詢么")
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()
以上就是本文的全部內(nèi)容,希望對大家學(xué)習(xí)python程序設(shè)計有所幫助。
相關(guān)文章
Scrapy-Redis結(jié)合POST請求獲取數(shù)據(jù)的方法示例
這篇文章主要給大家介紹了關(guān)于Scrapy-Redis結(jié)合POST請求獲取數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Scrapy-Redis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
python的virtualenv虛擬環(huán)境常見問題和命令
在Python中,venv是一個用于創(chuàng)建和管理虛擬環(huán)境的模塊,虛擬環(huán)境可以幫助你在項目之間隔離不同的Python包和依賴關(guān)系,這篇文章主要介紹了python的virtualenv虛擬環(huán)境常見問題和命令,需要的朋友可以參考下2024-07-07
python 定時器,實現(xiàn)每天凌晨3點執(zhí)行的方法
今天小編就為大家分享一篇python 定時器,實現(xiàn)每天凌晨3點執(zhí)行的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02

