Amazing-Python-Scripts

Форк
0
110 строк · 3.0 Кб
1
'''ToDo List GUI'''
2
import tkinter
3
from tkinter import END, ANCHOR
4
count = 0
5

6

7
'''Defining root window'''
8
root = tkinter.Tk()
9
root.title('ToDo-GUI')
10
root.iconbitmap('todo.ico')
11
root.geometry('400x400')
12
root.resizable(0, 0)
13

14

15
'''Define fonts and colors'''
16
my_font = ('Times New Roman', 12)
17
root_color = 'green'
18
button_color = '#e2cff4'
19
root.config(bg=root_color)
20

21

22
'''Define functions'''
23

24

25
def add_item():
26
    global count
27
    count = count+1
28
    my_listbox.insert(END, str(count) + ") " + list_entry.get())
29
    list_entry.delete(0, END)
30

31

32
def remove_item():
33
    my_listbox.delete(ANCHOR)
34

35

36
def clear_list():
37
    global count
38
    my_listbox.delete(0, END)
39
    count = 0
40

41

42
def save_list():
43
    with open('checklist.txt', 'w') as f:
44
        list_tuple = my_listbox.get(0, END)
45
        for item in list_tuple:
46
            if item.endswith('\n'):
47
                f.write(item)
48
            else:
49
                f.write(item+"\n")
50

51

52
def open_list():
53
    try:
54
        with open('checklist.txt', 'r') as f:
55
            for line in f:
56
                my_listbox.insert(END, line)
57
    except:
58
        return
59

60

61
'''Defining frames'''
62
input_frame = tkinter.Frame(root, bg=root_color)
63
output_frame = tkinter.Frame(root, bg=root_color)
64
button_frame = tkinter.Frame(root, bg=root_color)
65
input_frame.pack()
66
output_frame.pack()
67
button_frame.pack()
68

69

70
'''Input frame layout'''
71
list_entry = tkinter.Entry(input_frame, width=35, borderwidth=3, font=my_font)
72
list_add_button = tkinter.Button(
73
    input_frame, text="Add", borderwidth=2, font=my_font, bg=button_color, command=add_item)
74
list_entry.grid(row=0, column=0, padx=5, pady=5)
75
list_add_button.grid(row=0, column=1, padx=5, pady=5, ipadx=5)
76

77

78
'''Output frame layout'''
79
my_scrollbar = tkinter.Scrollbar(output_frame)
80
my_listbox = tkinter.Listbox(output_frame, height=15, width=45,
81
                             borderwidth=3, font=my_font, yscrollcommand=my_scrollbar.set)
82

83

84
'''Link scrollbar to listbox'''
85
my_scrollbar.config(command=my_listbox.yview)
86
my_listbox.grid(row=0, column=0)
87
my_scrollbar.grid(row=0, column=1, sticky="NS")
88

89

90
'''Button Frame layout'''
91
list_remove_button = tkinter.Button(
92
    button_frame, text="Remove Item", borderwidth=2, font=my_font, bg=button_color, command=remove_item)
93
list_clear_button = tkinter.Button(
94
    button_frame, text='Clear All', borderwidth=2, font=my_font, bg=button_color, command=clear_list)
95
save_button = tkinter.Button(button_frame, text='Save List',
96
                             borderwidth=2, font=my_font, bg=button_color, command=save_list)
97
quit_button = tkinter.Button(button_frame, text='Quit', borderwidth=2,
98
                             font=my_font, bg=button_color, command=root.destroy)
99
list_remove_button.grid(row=0, column=0, padx=2, pady=10)
100
list_clear_button.grid(row=0, column=1, padx=2, pady=10, ipadx=10)
101
save_button.grid(row=0, column=2, padx=2, pady=10, ipadx=10)
102
quit_button.grid(row=0, column=3, padx=2, pady=10, ipadx=25)
103

104

105
'''Open the previous list if available'''
106
open_list()
107

108

109
'''Run the root window's main loop'''
110
root.mainloop()\
111

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.