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