Інформація про новину
  • Переглядів: 777
  • Дата: 2-02-2022, 08:57
2-02-2022, 08:57

33. Об’єкти класу Listbox в Python

Категорія: Інформатика





Попередня сторінка:  32. Алгоритми впорядкування масиву в Pyth...
Наступна сторінка:   34. Візуалізація елементів табличної в...

Вибирати для виконання певних дій елементи списку із заданою ознакою зручніше, якщо ці елементи візуально представлені й доступні у графічному вікні. Таку можливість надають віджети класу Listbox.

Об’єкт класу Listbox дозволяє відображати список елементів, з якого користувач може обрати один або декілька пунктів.

Створення об’єктів класу Listbox

Для налаштування віджета Listbox можна задати в його конструкторі такі спільні для багатьох віджетів параметри, як bg, fg (колір фону; колір шрифту); font: настройки шрифту; width, height: висота та ширина елемента (за замовчуванням висота встановлюється в 10 рядків, ширина — 20 символів) у рядках. Важливо задати значення параметра selectmode, яке визначає, скільки елементів може бути виділено. За замовчуванням у Listbox натисканням миші можна вибрати тільки один елемент. Якщо установити

можна вибрати декілька елементів, утримуючи

натиснутою клавішу Ctrl.

При створенні віджета класу Listbox слід дотримуватися такої послідовності дій:

1) створити об’єкт класу Listbox;

2) заповнити список Listbox елементами;

3) розмістити віджет у вікні.

ПРИКЛАД 1. Створити віджет класу Listbox.

# Віджет розміщується у вікні

Для наповнення списку Listbox елементами слід у циклі for пройти по всіх елементах списку mova_progr і додати кожний елемент до списку Listbox за допомогою методу insert():

Як перший аргумент методу insert передається індекс вставлення елемента. Якщо ми хочемо послідовно додавати елементи, замість індекса можна використовувати значення END.

ПРИКЛАД 2. Відобразити у віджеті класу Listbox список мов програмування (рис. 33.1).

# Заповнюється за допомогою методу msert()

Основні методи Listbox

Крім методу insert(), клас Listbox має інші корисні методи для керування поведінкою об’єктів та їхнім вмістом. Розглянемо деякі з цих методів.

• Метод <назва об,єкта>.curselectionO повертає набір індексів елементів, що виділені.

ПРИКЛАД 3. Застосувати метод curselection() до списку віджета lbox_mova_progr. Метод викликається в обробнику події для кнопки Застосувати метод curselection() (рис. 33.2).

# Буде виведено (1, 3, 6)

• Метод <назва об’єкта>^еМе(п) видаляє зі списку Listbox елемент з індексом п.

ПРИКЛАД 4. Видалити елемент з індексом 6.

Вигляд списку після виконання методу подано на рис. 33.3.

• Метод <назва об,єкта>.get(n) повертає текст елемента з індексом n.

ПРИКЛАД 5. Вивести в консоль елемент списку Listbox з індексом 3.

# Буде виведено Java

ПРИКЛАД 6. Створити список elem з елементів, що додані до списку Listbox.

• Метод <назва об,єкта>.size0 повертає число елементів у списку Listbox.

ПРИКЛАД 7. Визначити кількість елементів у списку lbox_mova_progr.

# Буде виведено 8

Застосування методів класу Listbox

Додавати рядки до списку Listbox можна під час виконання програми, вводячи значення з клавіатури.

ПРИКЛАД 8. Запрограмувати додавання рядків до списку віджета lbox класу Listbox, уводячи по черзі значення до поля віджета entry_add класу Entry і натискаючи кнопку badd (рис. 33.4).

# Додавання рядка з поля entry_add до списку lbox

# Очищення поля entry_add

# Визначення кількості рядків у списку lbox

# Виведення значення k

# Віджет lbox розміщується у вікні

# Створення текстового поля

ПРИКЛАД 9. Додати до коду з прикладу 8 можливість зберігати список віджета lbox у текстовому файлі (рис. 33.5). Для цього слід створити кнопку Зберегти у файл і описати обробник події для кнопки.

Метод join() перетворює кортеж рядків, який повернув метод g^O, в один рядок через роздільник ’\

ПРИКЛАД 10. Обчислити суму чисел, які знаходяться в списку lbox, що створений у прикладі 8 (див. рис. 34.4).

До коду основної програми слід додати кнопку Знайти суму й описати обробник події для кнопки:

ПРИКЛАД 11. Обчислити суму чисел, які знаходяться у виділених рядках списку lbox, що створений у прикладі 8 (рис. 33.6).

Функцію bsum_cl() слід змінити таким чином:

# Список індексів виділених елементів

# Додавання елементів зі списку lbox, індекси яких знаходяться в списку select

Отже, віджет Listbox дозволяє унаочнити роботу зі списками, полегшити опрацювання значень у списку, вибір елементів тощо.

Питання для самоперевірки

1. Поясніть алгоритм створення об’єкта класу Listbox.

2. Створіть об’єкт lab класу Listbox. Заповніть список 5 випадковими цілими числами.

3. Виведіть у консоль число елементів у списку lab.

4. Виведіть у консоль індекс виділеного елемента списку lab.

5. Виведіть у консоль текст 3-го елемента в списку lab.

6. Видаліть 4-й елемент списку lab.

Вправа 33

Створити програму Покупки.

Завдання. Напишіть програму, що складається з двох списків Listbox. Перший список містить перелік товарів, другий — перелік покупок. При натисканні на одну кнопку товар має переходити з одного списку в інший.

При натисканні на іншу кнопку — повертатися (людина передумала купувати). Передбачити можливість множинного вибору елементів списку і їх переміщення.

1) Створіть Python file із назвою Покупки. Завантажте модуль tkinter. Створіть вікно програми із заголовком Покупки. Заверште програму оператором root.mainloop().

2) Додайте у вікно програми віджет boxl класу Listbox, занесіть до списку перелік товарів.

Додайте у вікно віджети btnl, btn2 класу Button (рис. 33.7).

3) Створіть об’єкт box2 класу Listbox, залиште його порожнім.

4) Опишіть обробник події для кнопки btn1 (перенесення елементів зі списку box1 до списку box2).

Підказка. У функції to_box2() кортеж обраних елементів перетворюється в список, після чого виконується його запис у зворотному порядку. Це робиться для того, щоб видалення елементів відбувалося з кінця списку.

Опишіть обробник події для кнопки btn2 (перенесення елементів зі списку box2 до списку boxl).

5) Додайте віджет labl класу Label із заголовком Кількість покупок і віджет lab2 класу Label для виведення кількості елементів у списку box2. Додайте до описів функцій оператори для зміни значення атрибуту text віджета lab2 на значення box 2.size().

Комп’ютерне тестування

Виконайте тестове завдання 33 з автоматичною перевіркою результату.

 

 

Це матеріал з підручника Інформатика 9 клас Бондаренко 2022

 




Попередня сторінка:  32. Алгоритми впорядкування масиву в Pyth...
Наступна сторінка:   34. Візуалізація елементів табличної в...



^