-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path02-listbox_improved.py
More file actions
56 lines (44 loc) · 2.3 KB
/
02-listbox_improved.py
File metadata and controls
56 lines (44 loc) · 2.3 KB
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
# Улучшенная схема 02-listbox.py
# Сделана обработка исключения tkinter.TclError,
# в случае нажатия на кнопку удаления без выбранных элементов.
# При этой ошибке пользователю будет показан messagebox с предупреждением об ошибке.
# Использование END, LEFT, RIGHT заменено использованием строковых обозначений.
# Улучшен интерфейс, добавлены полосы прокутки для Listbox
import tkinter as tk
from tkinter import messagebox as mb
main = tk.Tk()
main.title("Списки")
# Сделаны неизменные размеры окна
main.minsize(width=330, height=215)
main.maxsize(width=330, height=215)
# Подобраны идеальные размеры окна
main.geometry("330x215")
scrollY = tk.Scrollbar(main, orient='vertical')
scrollY.grid(column=1, row=1, rowspan=3, sticky=('n', 's'))
scrollX = tk.Scrollbar(main, orient='horizontal')
scrollX.grid(column=1, row=4, columnspan=3, sticky=('w', 'e'))
box = tk.Listbox(main, font="Helvetica", bg="black", fg="lightskyblue", yscrollcommand=scrollY.set, xscrollcommand=scrollX.set)
box.grid(row=1, column=2, rowspan=3, sticky=('n', 's', 'w', 'e'))
scrollY.config(command=box.yview)
scrollX.config(command=box.xview)
entry = tk.Entry(main)
entry.grid(row=1, column=3, sticky=('w', 'e'))
def add_item():
entry_text = entry.get()
# Если поле ввода пустое, не добавляем элемент в Listbox
if len(entry_text) == 0:
mb.showerror("ОШИБКА", "Не удалось получить введённые данные!")
return
box.insert('end', entry_text)
entry.delete(0, 'end')
def del_list():
try:
select = box.curselection()
box.delete(select)
except tk.TclError:
mb.showerror("ОШИБКА", "Вы не выбрали элемент для удаления")
addButton = tk.Button(main, text="Добавить", command=add_item)
addButton.grid(row=2, column=3, sticky=('n', 's', 'w', 'e'))
delButton = tk.Button(main, text="Удалить", command=del_list)
delButton.grid(row=3, column=3, sticky=('n', 's', 'w', 'e'))
main.mainloop()