-
Notifications
You must be signed in to change notification settings - Fork 0
V2 #3
Copy link
Copy link
Open
Description
import tkinter as t
import easygui as g
import pickle as pk
from tkinter import simpledialog as s
from tkinter import filedialog as f
page=1
start=1
end=27
text='1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13' \
'\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27'
def new_project():
global edit,places,chars
tk.title('文件编辑器 V2版本')
for i in range(27):
edit[i]=(t.Entry(tk,width=285,font=('微软雅黑',16)))
edit[i].place(x=45,y=places[i])
for i in range(1998):
chars[i]=''
def update():
global page
page_label.config(text=str(page)+'/74')
page_scale.set(page)
def open_file():
global information,chars
text=1
to_page=(text//27)+1
if page<to_page:
for i in range(page,to_page):
right()
else:
for i in range(to_page,page):
left()
try:
new_project()
information=f.askopenfilename()
file=open(information,'r')
file=file.read()
file=file.split('\n')
for i in range(len(file)):
chars[i]=file[i]
count=0
for i in file:
if count>26:
break
edit[count].insert(-1,i)
count+=1
update()
tk.title(information)
except FileNotFoundError:
new_project()
edit[0].insert(-1,'不存在当前文件地址:')
edit[1].insert(-1,information)
def save_as():
global chars,page,start,end
j=0
for i in range(start-1,end):
chars[i]=edit[j].get()
j+=1
name=f.asksaveasfilename()
file=open(name,'w')
for i in range(1998):
file.write(chars[i]+'\n')
new_project()
update()
tk.title('文件编辑器 V2版本')
def save_as_pkl_file():
global chars,page,start,end
S=""
j=0
for i in range(start-1,end):
S+=edit[j].get()
j+=1
name=f.asksaveasfilename()
file=open(name+'.pkl','w')
pk.dump(S,file)
file.close()
new_project()
update()
tk.title('文件编辑器 V2版本')
def left():
global page,text,start,end,text
if page==1:
pass
else:
j=0
for i in range(start,end+1):
chars[i]=edit[j].get()
j+=1
page-=1
start=(page-1)*27+1
end=page*27
text=''
j=0
for i in range(27):
edit[i]=t.Entry(tk,width=285,font=('微软雅黑',16))
edit[i].place(x=45,y=places[i])
for i in range(start,end+1):
if i!=end:
text+=str(i)+'\n'
else:
text+=str(i)
edit[j].insert(-1,chars[i])
j+=1
line_label.config(text=text)
update()
def right():
global page,text,start,end,text,chars,edit,places
if end==1998:
pass
else:
j=0
for i in range(start,end+1):
chars[i]=edit[j].get()
j+=1
page+=1
start=(page-1)*27+1
end=page*27
text=''
j=0
for i in range(27):
edit[i]=t.Entry(tk,width=285,font=('微软雅黑',16))
edit[i].place(x=45,y=places[i])
for i in range(start,end+1):
if i!=end:
text+=str(i)+'\n'
else:
text+=str(i)
edit[j].insert(-1,chars[i])
j+=1
line_label.config(text=text)
update()
def goto():
global page
to_page=s.askinteger('输入页数','请输入跳转到的页数')
if page<to_page:
for i in range(page,to_page):
right()
else:
for i in range(to_page,page):
left()
def goto_page():
global page
text=s.askinteger('输入行数','跳转到行数存在的页码')
to_page=(text//27)+1
if page<to_page:
for i in range(page,to_page):
right()
else:
for i in range(to_page,page):
left()
def seek():
global chars
text=s.askinteger('输入行数','如果有一些行数的内容太长,这样就可以轻松看到某一行的内容。')
right()
left()
g.codebox('查看器','内容:',str(chars[text]))
tk=t.Tk()
tk.geometry('1367x912')
tk.title('文件编辑器 V2版本')
tk.resizable(True,True)
tk.config(bg='light grey')
edit=[]
places=[]
chars=[]
for i in range(27):
places.append(28*i)
for i in range(1999):
chars.append('')
for i in range(27):
edit.append(t.Entry(tk,width=285,font=('微软雅黑',16)))
edit[i].place(x=45,y=places[i])
menu=t.Menu(tk)
file_menu=t.Menu(menu,tearoff=False)
menu_menu=t.Menu(menu,tearoff=False)
file_menu.add_command(label='新建',command=new_project)
file_menu.add_command(label='打开',command=open_file)
file_menu.add_command(label='保存',command=save_as)
file_menu.add_command(label='保存为 .pkl 文件(支持中文保存)',command=save_as_pkl_file)
menu_menu_goto=t.Menu(menu_menu,tearoff=False)
menu_menu_goto.add_command(label='跳转至页码',command=goto)
menu_menu_goto.add_command(label='跳转至行数',command=goto_page)
menu_menu.add_cascade(label='跳转至',menu=menu_menu_goto)
menu_menu.add_command(label='长文显示器',command=seek)
menu.add_cascade(label='文件',menu=file_menu)
menu.add_cascade(label='菜单',menu=menu_menu)
line_label=t.Label(tk,width=3,height=27,bg='grey',fg='black',font=('微软雅黑',16),text=text)
line_label.place(x=0,y=0)
left_button=t.Button(tk,width=3,height=1,font=('微软雅黑',11),text='<',command=left,bg='grey')
left_button.place(x=1250,y=770)
right_button=t.Button(tk,width=3,height=1,font=('微软雅黑',11),text='>',command=right,bg='grey')
right_button.place(x=1300,y=770)
page_label=t.Label(tk,width=5,height=1,font=('微软雅黑',16),text='1/74',bg='light grey')
page_label.place(x=1150,y=770)
page_scale=t.Scale(tk,from_=1,to=74,length=290,orient=t.HORIZONTAL,bg='light grey',highlightbackground='light grey')
page_scale.place(x=10,y=770)
tk.config(menu=menu)
tk.mainloop()Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels