Додавання рядків до списку Listbox з клавіатури
Запрограмуємо додавання рядків до списку віджета lbox класу Listbox, уводячи по черзі значення до поля віджета entry_add класу Entry і натискаючи кнопку badd (рис.1).
Запрограмуємо додавання рядків до списку віджета lbox класу Listbox, уводячи по черзі значення до поля віджета entry_add класу Entry і натискаючи кнопку badd (рис.1).
Рис.1
from tkinter import*
def badd_cl():
# Додавання рядка з поля entry_add до списку lbox
lbox.insert(END, entry_add.get())
entry_add.delete(0, END) # Очищення поля entry_add
k = lbox.size() # Визначення кількості рядків у списку lbox
k = lbox.size() # Визначення кількості рядків у списку lbox
lab2.config(text = 'кількість елементів '+str(k)) # Виведення значення k
root = Tk()
lbox = Listbox(root, selectmode = EXTENDED, width = 10, height = 8)
lbox.grid(row = 0, column = 0, rowspan = 5) # Віджет lbox розміщується у вікні
lab1 = Label(root, text = 'Уведіть число: ').grid(row = 0, column = 1)
entry_add = Entry(root) # Створення текстового поля
entry_add.grid(row = 1, column = 1)
badd = Button(text = "Додати число ", command = badd_cl)
badd.grid(row = 2, column = 1)
root = Tk()
lbox = Listbox(root, selectmode = EXTENDED, width = 10, height = 8)
lbox.grid(row = 0, column = 0, rowspan = 5) # Віджет lbox розміщується у вікні
lab1 = Label(root, text = 'Уведіть число: ').grid(row = 0, column = 1)
entry_add = Entry(root) # Створення текстового поля
entry_add.grid(row = 1, column = 1)
badd = Button(text = "Додати число ", command = badd_cl)
badd.grid(row = 2, column = 1)
lab2 = Label(root, text = '****')
lab2.grid(row = 3, column = 1)
root.mainloop()
lab2.grid(row = 3, column = 1)
root.mainloop()
Збереження списку Listbox у текстовому файлі
Додамо до коду можливість зберігати список віджета lbox у текстовому файлі (рис. 2).Рис.2
Для цього слід створити кнопку Зберегти у файл і описати обробник події для кнопки.
def saveList():
f = open('list.txt', 'w')
s = "\n".join(lbox.get(0, END))
print(s, file = f)
f.close()
f = open('list.txt', 'w')
s = "\n".join(lbox.get(0, END))
print(s, file = f)
f.close()
<…>
bsave = Button(root, text = "Зберегти у файл", command = saveList)
bsave.grid(row = 4, column = 1)
bsave.grid(row = 4, column = 1)
Метод join() перетворює кортеж рядків, який повернув метод get(), в один рядок через роздільник \n
Додавання чисел, які знаходяться в списку Listbox
Обчислимо суму чисел, які знаходяться в списку lbox (див. рис. 1). До коду основної програми слід додати кнопку Знайти суму й описати обробник події для кнопки:def bsum_cl():
elem = list(map(int, lbox.get(0, END)))
s = sum(elem)
lab2.config(text = ''Сума елементів ''+str(s))
<…>
bsum = Button(text = "Знайти суму", command = bsum_cl)
bsum.grid(row = 4, column = 1)
<…>
bsum = Button(text = "Знайти суму", command = bsum_cl)
bsum.grid(row = 4, column = 1)
Обчислимо суму чисел, які знаходяться у виділених рядках списку lbox (рис. 3).
Рис.6
Функцію bsum_cl() слід змінити таким чином:
def bsum_cl():
# Список індексів виділених елементів
select = list(lbox.curselection())
s = 0
# Додавання елементів зі списку lbox, індекси яких знаходяться в списку select
for i in select:
s = s+int(lbox.get(i))
lab2.config(text = 'Сума виділених '+str(s))
s = s+int(lbox.get(i))
lab2.config(text = 'Сума виділених '+str(s))
Отже, віджет Listbox дозволяє унаочнити роботу зі списками, полегшити опрацювання значень у списку, вибір елементів тощо.
Джерела:
Інформатика : підруч. для 9 кл. закл. загал. серед. освіти / [О. О. Бондаренко, В. В. Ластовецький, О. П. Пилипчук, Є. А. Шестопалов]. — Харків : Вид-во «Ранок», 2022