Списки. Клас Listbox

Віджет 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, та смугу прокручування. Забезпечити можливість вибору кількох елементів у списку.

Немає коментарів:

Дописати коментар