forked from avinashkranjan/Amazing-Python-Scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtodo.py
110 lines (80 loc) · 2.97 KB
/
todo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
'''ToDo List GUI'''
import tkinter
from tkinter import END, ANCHOR
count = 0
'''Defining root window'''
root = tkinter.Tk()
root.title('ToDo-GUI')
root.iconbitmap('todo.ico')
root.geometry('400x400')
root.resizable(0, 0)
'''Define fonts and colors'''
my_font = ('Times New Roman', 12)
root_color = 'green'
button_color = '#e2cff4'
root.config(bg=root_color)
'''Define functions'''
def add_item():
global count
count = count+1
my_listbox.insert(END, str(count) + ") " + list_entry.get())
list_entry.delete(0, END)
def remove_item():
my_listbox.delete(ANCHOR)
def clear_list():
global count
my_listbox.delete(0, END)
count = 0
def save_list():
with open('checklist.txt', 'w') as f:
list_tuple = my_listbox.get(0, END)
for item in list_tuple:
if item.endswith('\n'):
f.write(item)
else:
f.write(item+"\n")
def open_list():
try:
with open('checklist.txt', 'r') as f:
for line in f:
my_listbox.insert(END, line)
except:
return
'''Defining frames'''
input_frame = tkinter.Frame(root, bg=root_color)
output_frame = tkinter.Frame(root, bg=root_color)
button_frame = tkinter.Frame(root, bg=root_color)
input_frame.pack()
output_frame.pack()
button_frame.pack()
'''Input frame layout'''
list_entry = tkinter.Entry(input_frame, width=35, borderwidth=3, font=my_font)
list_add_button = tkinter.Button(
input_frame, text="Add", borderwidth=2, font=my_font, bg=button_color, command=add_item)
list_entry.grid(row=0, column=0, padx=5, pady=5)
list_add_button.grid(row=0, column=1, padx=5, pady=5, ipadx=5)
'''Output frame layout'''
my_scrollbar = tkinter.Scrollbar(output_frame)
my_listbox = tkinter.Listbox(output_frame, height=15, width=45,
borderwidth=3, font=my_font, yscrollcommand=my_scrollbar.set)
'''Link scrollbar to listbox'''
my_scrollbar.config(command=my_listbox.yview)
my_listbox.grid(row=0, column=0)
my_scrollbar.grid(row=0, column=1, sticky="NS")
'''Button Frame layout'''
list_remove_button = tkinter.Button(
button_frame, text="Remove Item", borderwidth=2, font=my_font, bg=button_color, command=remove_item)
list_clear_button = tkinter.Button(
button_frame, text='Clear All', borderwidth=2, font=my_font, bg=button_color, command=clear_list)
save_button = tkinter.Button(button_frame, text='Save List',
borderwidth=2, font=my_font, bg=button_color, command=save_list)
quit_button = tkinter.Button(button_frame, text='Quit', borderwidth=2,
font=my_font, bg=button_color, command=root.destroy)
list_remove_button.grid(row=0, column=0, padx=2, pady=10)
list_clear_button.grid(row=0, column=1, padx=2, pady=10, ipadx=10)
save_button.grid(row=0, column=2, padx=2, pady=10, ipadx=10)
quit_button.grid(row=0, column=3, padx=2, pady=10, ipadx=25)
'''Open the previous list if available'''
open_list()
'''Run the root window's main loop'''
root.mainloop()\