From c9ea6913b4fbc4e1b7c12db14678083cdba3f18e Mon Sep 17 00:00:00 2001 From: phulxjsfp <1244218768@qq.com> Date: Sun, 2 Jun 2024 22:10:34 +0800 Subject: [PATCH] ADD file via upload --- pythonlib.py | 277 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 277 insertions(+) create mode 100644 pythonlib.py diff --git a/pythonlib.py b/pythonlib.py new file mode 100644 index 0000000..69f2df5 --- /dev/null +++ b/pythonlib.py @@ -0,0 +1,277 @@ +from tkinter import * +import chardet +import datetime +import os +import tkinter.messagebox as ttk +from tkinter import Toplevel, Listbox, Scrollbar, END +from tkinter import filedialog +from tkinter import filedialog +desktop_path = os.path.join(os.path.expanduser("~"), 'Desktop') +def show_diary_calendar(date, content): + + calendar_window = Toplevel(root) + calendar_window.title('日历 - 查看日记') + calendar_window.geometry("500x300") # 根据需要调整大小 + + listbox = Listbox(calendar_window, width=80) + listbox.insert(END, f"{date} - {content}") + listbox.pack(fill=BOTH, expand=True) + scroll = Scrollbar(calendar_window, command=listbox.yview) + scroll.pack(side=RIGHT, fill=Y) + listbox.config(yscrollcommand=scroll.set) +def helloCallBack6(): + file_path = filedialog.askopenfilename(filetypes=[('Text Files', '*.txt')]) + if file_path: + # 检测文件编码 + with open(file_path, 'rb') as file: + result = chardet.detect(file.read()) + encoding = result['encoding'] + + try: + with open(file_path, 'r', encoding=encoding) as file: + content = file.read() + date_str = os.path.splitext(os.path.basename(file_path))[0] + show_diary_calendar(date_str, content) + except (IOError, UnicodeDecodeError) as e: + ttk.showerror('错误', f"无法读取文件: {e}") + except Exception as e: + ttk.showerror('错误', f"处理文件时发生错误: {e}") +root=Tk() +root.title('日记') +root.resizable(width=False, height=False) +sw = root.winfo_screenwidth() +#得到屏幕宽度 +sh = root.winfo_screenheight() +#得到屏幕高度 +ww = 1000 +wh = 600 +#窗口宽高为100 +x = (sw-ww) / 2 +y = (sh-wh) / 2 +root.geometry("%dx%d+%d+%d" %(ww,wh,x,y)) +#按键功能 +def helloCallBack(): + now = datetime.datetime.now() + a=now.year # 2022 + b=now.month # 3 + c=now.day # 20 + e1.insert(0,a) + e2.insert(0,b) + e3.insert(0,c) +def helloCallBack1(): + d=e1.get() + e=e2.get() + f=e3.get() + g=text1.get("0.0","end") + if d=='' or e=='' or f=='': + ttk.showerror('错误提示','警告:没有输入日期') + else: + name=d+'-'+e+'-'+f + full_path = name + '.txt' # 也可以创建一个.doc的word文档 + file = open(full_path, 'w') + file.write(g) + file.close() + def jindu(): + import tkinter as tk + import time + + # 创建主窗口 + window = tk.Tk() + window.title('保存') + sw = window.winfo_screenwidth() + #得到屏幕宽度 + sh = window.winfo_screenheight() + #得到屏幕高度 + ww = 400 + wh = 100 + #窗口宽高为100 + x = (sw-ww) / 2 + y = (sh-wh) / 2 + window.geometry("%dx%d+%d+%d" %(ww,wh,x,y)) + window.overrideredirect(True) + # 设置下载进度条 + tk.Label(window, text='加载进度:', ).place(x=0, y=40) + canvas = tk.Canvas(window, width=330, height=22, bg="#AAA") + canvas.place(x=60, y=40) + + # 显示下载进度 + def progress(): + # 填充进度条 + fill_line = canvas.create_rectangle(1.5, 1.5, 0, 23, width=0, fill="#00A") + x = 250 # 未知变量,可更改 + n = 465 / x # 465是矩形填充满的次数 + for i in range(x): + n = n + 465 / x + canvas.coords(fill_line, (0, 0, n, 60)) + window.update() + time.sleep(0.008) # 控制进度条流动的速度 + progress() + window.destroy() + window.mainloop() + jindu() +def helloCallBack2(): + os._exit(0) +def helloCallBack3(): + root1=Tk() + root1.title('查询日记') + sw = root1.winfo_screenwidth() + #得到屏幕宽度 + sh = root1.winfo_screenheight() + #得到屏幕高度 + ww = 450 + wh = 100 + #窗口宽高为100 + x = (sw-ww) / 2 + y = (sh-wh) / 2 + root1.geometry("%dx%d+%d+%d" %(ww,wh,x,y)) + #文本加载 + e01 = Entry(root1,width=10) + e02 = Entry(root1,width=10) + e03 = Entry(root1,width=10) + myLabel00=Label(root1,text='时间:',font=("楷体",18,"bold"),fg="#FFA500") + myLabel01=Label(root1,text='年:',font=("楷体",18)) + myLabel02=Label(root1,text='月:',font=("楷体",18)) + myLabel03=Label(root1,text='日:',font=("楷体",18)) + #按键功能 + def helloCallBack0(): + a=e01.get() + b=e02.get() + c=e03.get() + name=a+'-'+b+'-'+c + full_path = name + '.txt' # 也可以创建一个.doc的word文档 + def newone(): + return os.path.isfile(full_path) + d=newone() + if d==False: + ttk.showerror('错误提示','警告:没有所选时间的日记') + elif d==True: + e=open(full_path) + top10=[] + for line in e.readlines(): + top10.append(line) + e.close() + root2=Tk() + root2.title('日记') + root2.resizable(width=False, height=False) + sw = root2.winfo_screenwidth() + #得到屏幕宽度 + sh = root2.winfo_screenheight() + #得到屏幕高度 + ww = 1000 + wh = 600 + #窗口宽高为100 + x = (sw-ww) / 2 + y = (sh-wh) / 2 + root2.geometry("%dx%d+%d+%d" %(ww,wh,x,y)) + #文本加载 + text01 = Text(root2,height=20,font=("楷体",18),state=NORMAL) + text01.insert(0.0,top10) + text01.delete(0.0) + #文本显示 + text01.grid(row=4,column=0) + #屏幕调用 + root2.mainloop() + #文本显示 + e01.grid(row=1,column=1) + e02.grid(row=1,column=3) + e03.grid(row=1,column=5) + myLabel00.grid(row=0,column=0) + myLabel01.grid(row=1,column=0) + myLabel02.grid(row=1,column=2) + myLabel03.grid(row=1,column=4) + #按键加载 + btn1 = Button(root1,text='确定',bg='#AAA',fg="#000",command = helloCallBack0,font=("楷体",16)) + #按键显示 + btn1.grid(row=2,column=2) + #屏幕调用 + root1.mainloop() +def helloCallBack4(): + root3=Tk() + root3.title('删除日记') + sw = root3.winfo_screenwidth() + #得到屏幕宽度 + sh = root3.winfo_screenheight() + #得到屏幕高度 + ww = 450 + wh = 100 + #窗口宽高为100 + x = (sw-ww) / 2 + y = (sh-wh) / 2 + root3.geometry("%dx%d+%d+%d" %(ww,wh,x,y)) + #文本加载 + e01 = Entry(root3,width=10) + e02 = Entry(root3,width=10) + e03 = Entry(root3,width=10) + myLabel00=Label(root3,text='时间:',font=("楷体",18,"bold"),fg="#FFA500") + myLabel01=Label(root3,text='年:',font=("楷体",18)) + myLabel02=Label(root3,text='月:',font=("楷体",18)) + myLabel03=Label(root3,text='日:',font=("楷体",18)) + #按键功能 + def helloCallBack01(): + a=e01.get() + b=e02.get() + c=e03.get() + name=a+'-'+b+'-'+c + full_path = name + '.txt' # 也可以创建一个.doc的word文档 + def newone(): + return os.path.isfile(full_path) + d=newone() + if d==False: + ttk.showerror('错误提示','警告:没有所选时间的日记') + elif d==True: + os.remove(full_path) + ttk.showerror('提示','文件已成功删除') + #文本显示 + e01.grid(row=1,column=1) + e02.grid(row=1,column=3) + e03.grid(row=1,column=5) + myLabel00.grid(row=0,column=0) + myLabel01.grid(row=1,column=0) + myLabel02.grid(row=1,column=2) + myLabel03.grid(row=1,column=4) + #按键加载 + btn1 = Button(root3,text='确定',bg='#AAA',fg="#000",command = helloCallBack01,font=("楷体",16)) + #按键显示 + btn1.grid(row=2,column=2) + #屏幕调用 + root3.mainloop() + + +#文本加载 +e1 = Entry(root,width=10) +e2 = Entry(root,width=10) +e3 = Entry(root,width=10) +myLabel0=Label(root,text='时间:',font=("楷体",18,"bold"),fg="#FFA500") +myLabel1=Label(root,text='年:',font=("楷体",18)) +myLabel2=Label(root,text='月:',font=("楷体",18)) +myLabel3=Label(root,text='日:',font=("楷体",18)) +myLabel4=Label(root,text='日记部分:',font=("楷体",18)) +text1 = Text(root,bg='#000',height=20,fg="#FFF",font=("楷体",18)) +#按键加载 +btn1 = Button(root,text='自动填充',bg='#AAA',fg="#0FF",command = helloCallBack,font=("楷体",16)) +btn2 = Button(root,text='保存日记',bg='#00F',fg="#000",command = helloCallBack1,font=("楷体",16,"bold")) +btn3 = Button(root,text='退出日记',bg='#F00',fg="#000",command = helloCallBack2,font=("楷体",16,"bold")) +btn4 = Button(root,text='查询日记',bg='#0F0',fg="#000",command = helloCallBack3,font=("楷体",16,"bold")) +btn5 = Button(root,text='删除日记',bg='#F00',fg="#000",command = helloCallBack4,font=("楷体",16,"bold")) +btn6 = Button(root, text='查看日记日历',bg='#F00',fg="#000", command=helloCallBack6,font=("楷体",16,"bold")) + +#文本显示 +e1.grid(row=1,column=2) +e2.grid(row=1,column=4) +e3.grid(row=1,column=6) +myLabel0.grid(row=0,column=0) +myLabel1.grid(row=1,column=1) +myLabel2.grid(row=1,column=3) +myLabel3.grid(row=1,column=5) +myLabel4.grid(row=3,column=0) +text1.grid(row=4,column=0,columnspan=100) +#按键显示 +btn1.grid(row=1,column=7) +btn2.grid(row=3,column=1) +btn3.grid(row=2,column=0) +btn4.grid(row=2,column=1) +btn5.grid(row=2,column=2) +btn6.grid(row=2,column=3) + +#屏幕调用 +root.mainloop() \ No newline at end of file