Listbox
Віджет Listbox – клас списку. Це віджет, який представляє собою список, з елементів якого користувач може вибирати один або кілька пунктів.
Загальний синтаксис:
Загальний синтаксис:
name = Listbox(window)
name – ім'я списку, window – ім'я вікна, на якому він розташовується.
Властивості віджета Listbox
Властивості віджета Listbox
Функції віджета Listbox
Функції віджета Listbox
Спочатку список (Listbox) порожній. За допомогою циклу for в нього додаються пункти зі списку. Додавання відбувається за допомогою спеціального методу класу Listbox – insert. Даний метод приймає два параметри: куди додати і що додати.
Приклад:
Приклад:
list1 = ["Python", "Java", "C", "C++"] # задаємо елементи, які повинні потрапити у список
listbox1 = Listbox(root, height=5, width=15, selectmode=EXTENDED) # створюємо віджет – список
for i in list1: # додаємо елементи у віджет
listbox1.insert(END, i)
Приклади застосування
Приклади застосування
Завдання 1. Розмістити у вікні список, який містить числа від 1 до 100, та смугу прокручування. Забезпечити можливість вибору кількох елементів у списку.
Завдання 1. Розмістити у вікні список, який містить числа від 1 до 100, та смугу прокручування. Забезпечити можливість вибору кількох елементів у списку.
Вказівка. Можливість вибору кількох елементів у списку забезпечує властивість selectmode зі значенням EXTENDED.
from tkinter import * # імпортування графічної бібліотеки
root = Tk() # створення головного вікна
list = Listbox(root, selectmode=EXTENDED) # створення та розміщення списку
list.pack(side=LEFT, fill=Y)
for i in range(100): # додавання елементів у список
list.insert(END, str(i+1))
scroll = Scrollbar(root) # створення та розміщення смуги прокручування
scroll.pack(side=RIGHT, fill=Y)
scroll.config(command=list.yview) # встановлення зв'язку між скроллером та списком
list.config(yscrollcommand=scroll.set) # зв'язка списку з панеллю прокручування
root.mainloop() # задання команди відображення вікна при запуску
Завдання 2. Розмістити у вікні список з можливістю вибору одного елемента та кнопку, яка друкує обране у списку значення.
Завдання 2. Розмістити у вікні список з можливістю вибору одного елемента та кнопку, яка друкує обране у списку значення.
from tkinter import * # імпортування графічної бібліотеки
root = Tk() # створення головного вікна
# функція для друку елемента списку
def f():
print(list.get(list.curselection())) # друкуємо вибраний елемент списку по його індексу
list = Listbox(root, selectmode=SINGLE, width=15, height=5) # створення та розміщення списку
list.pack(side=LEFT, padx=20)
for i in ['Python', 'Java', 'C', 'C++']: # додавання елементів у список
list.insert(END, i)
butt = Button(root, text='Друкувати', command=f) # створення та розміщення кнопки
butt.pack(side=LEFT, padx=5)
root.mainloop() # задання команди відображення вікна при запуску
Завдання 3. Розмісти у вікні два списки Listbox. У першому буде перелік товарів, заданий програмно. Другий спочатку порожній, нехай це буде перелік покупок. При кліці на одну кнопку товар повинен переходити з одного списку в інший. При кліці на другу кнопку – повертатися.
Завдання 3. Розмісти у вікні два списки Listbox. У першому буде перелік товарів, заданий програмно. Другий спочатку порожній, нехай це буде перелік покупок. При кліці на одну кнопку товар повинен переходити з одного списку в інший. При кліці на другу кнопку – повертатися.
from tkinter import * # імпортування графічної бібліотеки
root = Tk() # створення головного вікна
# функція для перенесення товару з першого списку в другий
def lbox1_to_lbox2():
lbox2.insert(END, lbox1.get(lbox1.curselection()))
lbox1.delete(lbox1.curselection())
# функція для перенесення товару з другого списку в перший
def lbox2_to_lbox1():
lbox1.insert(END, lbox2.get(lbox2.curselection()))
lbox2.delete(lbox2.curselection())
lbox1 = Listbox(root, selectmode=SINGLE) # створення та розміщення першого списку
lbox1.pack(side=LEFT)
for i in ['молоко', 'хліб', 'масло', 'м\'ясо', 'яйця']: # додавання елементів у перший список
lbox1.insert(END, i)
# створення фрейма та наповнення його кнопками
f1 = Frame(root)
button1 = Button(f1, text='>>>', command=lbox1_to_lbox2)
button1.pack(side=TOP)
button2 = Button(f1, text='<<<', command=lbox2_to_lbox1)
button2.pack(side=BOTTOM)
f1.pack(side=LEFT)
lbox2 = Listbox(root, selectmode=SINGLE) # створення та розміщення другого списку
lbox2.pack(side=LEFT)
root.mainloop() # задання команди відображення вікна при запуску