Якщо користувачеві потрібно надати можливість обирати один або кілька елементів з певного переліку, застосовують такий елемент інтерфейсу, як список. У вигляді списків можна подавати назви річок, прізвища, розміри шрифтів, оцінки учнів тощо. Отже, список - це елемент керування, що складається з текстових рядків, які може обирати користувач. Списки створюють за допомогою класу (конструктора) Listbox.
Загальний вигляд коду для створення списку буде таким:
змінна=Listbox(властивості)
Для виведення списку у графічному вікні, як і для інших елементів користування, використовують методи pack або place.
Кількість елементів, що буде відображено у списку, встановлюється за допомогою властивості height.
Так, для створення списку, наведеного на рисунку.
height=7
Уведіть команди створення графічного вікна, що має заголовок Формування покупки та розміри 360х320.
2. Додайте команди створення написів Комплектуючі та Замовлення, що мають бути розташовані над списками.
3.Уведіть команди створення списків:
Lbox1=Listbox(root, height=9)
Lbox1.place(x=20, y=50, width=120)
Lbox2=Listbox(root, height=9)
Lbox2.place(x=220, y=50, width=120)
Як видно з програмного коду, створення кожного списку складається з двох команд. У першій команді змінній присвоюємо конструктор (клас) Listbox з властивостями root i height=9. у другій команді, як і для створення інших елементів керування, - метод розташування списку в графічному вікні.
4. Додайте метод root.mainloop()
5. Запустіть програму та перевірте правильність створення вікна та елементів керування.
Для додавання елементів до списку використовують метод insert(індекс, елемент).
Тут індекс - номер позиції, на яку необхідно вставити елемент. Зверніть увагу на те, що нумерація елементів списку починається з нуля. Якщо елемент необхідно додати в кінець списку, то замість параметра індекс потрібно записати значення END.
6. Уведіть команду додавання до створеного списку елемента "ноутбук"
Lbox1.insert(END,"ноутбук")
7. Уведіть команду додавання до створеного списку елемента "ноутбук"
8. Запустіть програму та переконайтеся, що елементи з назвами товарів розташовано у списку.
=====================
def btn1_click():
for i in range (Lbox1.size()):
item=Lbox1.get(i)
Lbox2.insert(END, item)
Lbox1.delete(0,END)
================
Btn1=Button(root,text='>>',command=btn1_click)
9. Додайте до інтерфейсу програми кнопки >>, >, <, << з іменами Btn1, Btn2, Btn3, Btn4 відповідно.
Розглянемо створення обробника події першої кнопки. Натиснення на неї має переміщувати всі елементи з першого списку до другого.
Алгоритм дії обробника може бути таким. Беремо по черзі кожен елемент списку 1 і вставляємо його до списку 2. Після закінчення цього процесу очищуємо список 1. Отже, з даного алгоритму зрозуміло, що перенесення елементів зі списку 1 до списку 2 має відбуватися у циклі. Кількість ітерацій (повторювань) буде дорівнювати кількості елементів, що має список на момент натискання кнопки.
Для визначення розмірності списку (кількості елементів у списку) використовують метод size. Отже, розмір першого списку буде знайдено за допомогою коду
Lbox1.size()
10. Уведіть код обробника першої кнопки, що здійснює копіювання елементів з першого списку до другого.
def btn1_click():
#цикл від першого до останнього елемента у списку
for i in range (Lbox1.size()):
#змінній надається значення елемента списку під номером i
item=Lbox1.get(i)
#значення item розміщуються в кінці списку Lbox2
Lbox2.insert(END, item)
Також після копіювання елементів зі списку 1 до списку 2 ми маємо очистити перший список. Для очищення списку використовують метод delete. В нашому випадку - це команда Lbox1.delete(0,END), що означає вилучення усіх елементів від першого до останнього.
11. Додайте до обробника події першої кнопки команду очищення списку за межами тілу циклу.
12. Додайте команду виклику обробника події у коді першої кнопки.
13. Запустіть програму та перевірте, як буде працювати перша кнопка.
14. Аналогічно створіть команди обробника 4-ї кнопки та перевірте її роботу після запуску програми.
Після виділення елемента зі списку 1 та натиснення на другу кнопку цей елемент має переміщуватися до списку 2 знизу.
Для визначення номера виділеного елемента використовується метод curselection
15. Уведіть обробник для другої кнопки:
def btn2_click():
n_item=Lbox1.curselection() #присвоєння номера виділеного елемента списку
item=Lbox1.get(n_item)#визначення значення елемента за номером
Lbox2.insert(END, item)#додавання елемента в кінець 2-го списку
Lbox1.delete(n_item)#вилучення елемента з 1-го списку
16. Додайте команду виклику обробника події у коді 2-ї кнопки.
17. Запустіть програму на виконання. Оберіть елемент списку, натисніть на 2-гу кнопку, в результаті цей елемент має з'явитись у 2-му списку, а з 1-го списку він буде вилучений. Виконайте ці ж дії з іншими елементами 1-го списку.