Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 95c226d

Browse files
committedOct 20, 2021
Python To Do app
1 parent 4399bb5 commit 95c226d

File tree

6 files changed

+230
-0
lines changed

6 files changed

+230
-0
lines changed
 

‎todolist/.idea/inspectionProfiles/profiles_settings.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎todolist/.idea/misc.xml

+4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎todolist/.idea/modules.xml

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎todolist/.idea/todolist.iml

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎todolist/.idea/workspace.xml

+113
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎todolist/main.py

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
import tkinter
2+
import threading
3+
from tkinter import messagebox
4+
import sys
5+
6+
tasks = []
7+
timer = threading
8+
real_timer = threading
9+
ok_thread = True
10+
11+
12+
def get_entry(event=""):
13+
text = todo.get()
14+
hour = int(time.get())
15+
todo.delete(0, tkinter.END)
16+
time.delete(0, tkinter.END)
17+
todo.focus_set()
18+
add_list(text, hour)
19+
if 0 < hour < 999:
20+
update_list()
21+
22+
23+
def add_list(text, hour):
24+
tasks.append([text, hour])
25+
timer = threading.Timer(hour, time_passed, [text])
26+
timer.start()
27+
28+
29+
def update_list():
30+
if todolist.size() > 0:
31+
todolist.delete(0, "end")
32+
for task in tasks:
33+
todolist.insert("end", "[" + task[0] + "] Time left: " + str(task[1]) + " secondes")
34+
35+
36+
def time_passed(task):
37+
tkinter.messagebox.showinfo("Notification", "Time for : " + task)
38+
39+
40+
def real_time():
41+
if ok_thread:
42+
real_timer = threading.Timer(1.0, real_time)
43+
real_timer.start()
44+
for task in tasks:
45+
if task[1] == 0:
46+
tasks.remove(task)
47+
task[1] -= 1
48+
update_list()
49+
50+
51+
if __name__ == '__main__':
52+
# application
53+
app = tkinter.Tk()
54+
app.geometry("480x680")
55+
app.title("Todolist Remainder")
56+
app.rowconfigure(0, weight=1)
57+
58+
# fenetre
59+
frame = tkinter.Frame(app)
60+
frame.pack()
61+
62+
# widgets
63+
label = tkinter.Label(app, text="Enter work to do:",
64+
wraplength = 200,
65+
justify = tkinter.LEFT)
66+
label_hour = tkinter.Label(app, text="Enter time (secondes)",
67+
wraplength = 200,
68+
justify = tkinter.LEFT)
69+
todo = tkinter.Entry(app, width=30)
70+
time = tkinter.Entry(app, width=15)
71+
send = tkinter.Button(app, text='Add task', fg="#ffffff", bg='#6186AC', height=3, width=30, command=get_entry)
72+
quit = tkinter.Button(app, text='Exit', fg="#ffffff", bg='#EB6464', height=3, width=30, command=app.destroy)
73+
todolist = tkinter.Listbox(app)
74+
if tasks != "":
75+
real_time()
76+
77+
# binding
78+
app.bind('<Return>', get_entry)
79+
80+
# widgets placement
81+
label.place(x=0, y=10, width=200, height=25)
82+
label_hour.place(x=235, y=10, width=200, height=25)
83+
todo.place(x=62, y=30, width=200, height=25)
84+
time.place(x=275, y=30, width=50, height=25)
85+
send.place(x=62, y=60, width=50, height=25)
86+
quit.place(x=302, y=60, width=50, height=25)
87+
todolist.place(x=60, y = 100, width=300, height=300)
88+
89+
app.mainloop()
90+
ok_thread = False
91+
sys.exit("FINISHED")

0 commit comments

Comments
 (0)
Please sign in to comment.