Віджет Listbox призначений для відображення списку значень, їх вибору або зміни користувачем. Listbox буде відображено завжди відкритим.
Для відображення списку і
вікні використовуємо такий запис:
lb=Listbox(width=12, height=8)
lb.pack()
Заповнення Listbox елементами:
1.Створити список і за допомогою циклу заповнити Listbox елементами списку
a=[1,2,3,4]
lb=Listbox( width=12, height=8)
for a in a:
lb.insert(END,a)
lb.pack()
2. Введення з клавіатури:
a=[]
n=int(input("Введіть кількість елементів масиву"))
lb=Listbox( width=12, height=8)
for і in range(n):
x=int(input("Введіть елемент масиву"))
a.append(x)
for a in a:
lb.insert(END,a)
lb.pack()
Часто вміст списку не помішається в Listbox. Тоді ми застововуємо смугу прокручування Scrollbar. Щоб смуга розташувалася не нижче у вікні її застосовують наступним чином: Спосатку створюється список (box), потім смуга прокручування (scroll), яка прив'язується з допомогою опції command до смуги прокручування box по вертикальній осі (yview). Далі смуга прокручування змінюється за допомогою методу config: встановлюється значення опції в yscrollcommand.
scroll=Scrollbar(command=box.yview)
scroll.pack(side=LEFT, fill=Y)
box.config(yscrollcommand=scroll.set)
Методи класу Listbox:
get() - взяти текст з текстового поля
insert() - вставити текст
delete(0, END) - видалити текст з 0 символу до кінця
curselection () - виводить в вигляді кортежу індекси вибраних елементів
pack() - показати
Властивості (атрибути) класу Listbox:
selectmode-визначає скільки елементів(рядків) можна вибрати(виділити)
- EXTENDED -будь-яка кількість рядків
- SINGLE- один рядок
Методи у Python записуються наступним чином:
box = Listbox(selectmode=EXTENDED)
Функції у Python записуються наступним чином:
box.insert(END, entry.get())
Приклад 1. Створити вікно з полем для введення, списком і двома кнопками "Додати" і "Видалити" для додавання і видалення елементів списку. Введіть в список 5 назв кольорів.
from tkinter import * def add_item(): box.insert(END, entry.get()) entry.delete(0, END) def del_list(): select = list(box.curselection()) select.reverse() for i in select: box.delete(i) root=Tk() box =Listbox(selectmode=EXTENDED) box.pack(side=LEFT) scroll=Scrollbar(command=box.yview) scroll.pack(side=LEFT, fill=Y) box.config(yscrollcommand=scroll.set) f = Frame() f.pack(side=LEFT, padx=10) entry = Entry(f) entry.pack(anchor=N) Button(f, text="Додати", command=add_item).pack(fill=X) Button(f, text="Видалити", command=del_list).pack(fill=X) root.mainloop()Приклад 2. Створити вікно з двома списками і двома кнопками ">>>" і "<<<" для додавання і видалення елементів списку з одного спивку до іншого і навпаки.
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()
Завдання 1. Розмістити у вікні список, який містить числа від 1 до 100, та смугу прокручування. Забезпечити можливість вибору кількох елементів у списку.
Немає коментарів:
Дописати коментар