Проект. Робота з даними

Від класу Listbox створюють списки - віджети, всередині яких у стовпчиках перераховуються елементи. При цьому можна вибирати один або декілька елементів списку.

У Tkinter створюємо екземпляр Listbox, після чого він заполняется за допомогою методу insert ().

from tkinter import*
root=Tk()
lbox=Listbox(width=15, heigh=8)
lbox.pack(pady=5)
for i in ("one","two","tree","four","five","six","seven"):
    lbox.insert(0,i)
root.mainloop()
Першим аргументом в insert () передається індекс місця, куди буде вставлений елемент. Якщо потрібно вставляти в кінець списку, то індекс позначають константою END. Другим аргументом передається елемент.

За замовчуванням в Listbox, клікаючи мишкою, можна вибирати тільки один елемент. Якщо необхідно забезпечити множинний вибір, то для властивості selectmode можна встановити значення EXTENDED. У цьому режимі можна вибрати як завгодно елементів, затиснувши Ctrl або Shift.

Якщо для Listbox необхідний скроллер, то він налаштовується також як для текстового поля. У програму додається віджет Scrollbar і зв'язується з екземпляром Listbox.

За допомогою методу get () зі списку можна отримати один елемент за індексом, або зріз, якщо вказати два індекси. Метод delete () видаляє один елемент або зріз.

Метод curselection () дозволяє отримати у вигляді кортежу індекси обраних елементів примірника Listbox.


Нижче наводиться приклад програми, що ілюструє застосування методів get (), insert (), delete () і curselection () класу Listbox. Перша кнопка додає введену користувачем в текстове поле рядка в список, друга кнопка видаляє обрані елементи зі списку, третя - зберігає список в файл.

# Програма 
# Робота з даними
from tkinter import*
#
def addItem():
    lbox.insert(END, entry.get()) #
    entry.delete(0, END)          #
#
def delList():
    select = list(lbox.curselection())
    select.reverse()
    for i in select:
        lbox.delete(i)

def saveList():
    f = open('list000.txt', 'w')
    f.writelines("\n".join(lbox.get(0, END)))
    f.close()

root = Tk()
root.geometry("300x200+300+100")
root.title("Робота з даними")
root["bg"]="Sky Blue"

lbox = Listbox(selectmode=EXTENDED)
lbox.pack(side=LEFT)
scroll = Scrollbar(command=lbox.yview)
scroll.pack(side=LEFT, fill=Y)
lbox.config(yscrollcommand=scroll.set)

f = Frame()
f.pack(side=LEFT, padx=10)
entry = Entry(f)
entry.pack(anchor=N)
badd = Button(f, text="Добавити", command=addItem)
badd.pack(fill=X)
bdel = Button(f, text="Вилучити", command=delList)
bdel.pack(fill=X)
bsave = Button(f, text="Запис в файл", command=saveList)
bsave.pack(fill=X)

root.mainloop()


Завдання
1.Виконати код програми 
2.Добавити до складу списку ще 10 термінів англійською мовою на тему графічний інтерфейс
3. Зробити скриншот вікна програми 
4. Вилучити елементи списку, що стоять на парних місцях
5. Зробити знову скриншот вікна програми
6. Записати дані в файл
7. Зробити скриншот змісту текстового файлу  list000.txt
8. Доповнити код програми коментарями

Запитання
1. Які об'єкти створюють від класу Listbox ?
2. З допомогою якого методу заповнюють списки ?
4.  Що виконує метод delete(0, END) ?
5. З допомогою якого віджета налаштовують скролінг текстового поля ?
6. З допомогою якого методу можна отримати елемент по індексу або зріз ?
7. Які дії виконує метод curselection () ?



















Комментариев нет:

Отправить комментарий