Найти в Дзене
programmer's notes (python and more)

Программирование на языке Python. Библиотека tkinter, списки, события

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Библиотека tkinter | programmer's notes (python and more) | Дзен
Стандартные библиотеки Python | programmer's notes (python and more) | Дзен

tkinter, списки, события, bind()

Продолжаем заниматься tkinter, сегодня речь пойдёт о списке (Listbox). Также продолжаем развивать тему событий, которую мы начали в предыдущей статье.

Ниже (рисунок 1) представлена программа со списком и другими элементами, обслуживания этого списка (см. Рисунок 2). Можно добавить элемент, представленный в поле ввода при помощи кнопки Добавить. или просто нажать клавишу Enter в поле ввода. Удалить выбранный элемент списка можно с помощью кнопки Удалить или двойным щелчком по этому элементу.

Рисунок 1. Программа, показывающая работу со списком. Текст программы см. ниже по ссылке
Рисунок 1. Программа, показывающая работу со списком. Текст программы см. ниже по ссылке
primer352.py

Пояснения к программе

  • Прежде всего обращу внимание на обработку событий. Здесь много интересного. Во-первых, здесь показано, как обрабатывать отпускание кнопки (<ButtonRelease-1>). И мы опять используем метод bind(), но уже по отношению к кнопке. Отпускание, кстати, обработывать более предпочтительно, чем нажимание. Дело в том, что при нажатии, могут выполняться разные действия, в том числе и те, которые помешают вернуть кнопку в исходное состояние. Во-вторых, мы обрабатываем двойной щелчок мыши по элементу списка (<Double-1>). Обработку выполняет тот же метод, что и при щелчке по кнопке Удалить. В третьих, в поле ввода мы обрабатываем также и нажатие клавиши Enter (if event.keycode == 36).
  • Обратим внимание также на обработку того, выбран или нет элемент списка (self.lst.curselection()). Метод curselection() возвращает пустой кортеж, если элемент не выбран. Если он выбран то первый элемент кортежа это индекс элемента. Получить строку элемента можно с помощью метода Listbox.get(). Ну, а удалить элемент можно с помощью метода Listbox.delete(), где аргументом является индекс элемента.
  • Добавить элемент к списку можно с помощью метода Listbox.insert(), где первым параметром нужно указать куда вставлять (индекс). В качестве индекса (куда вставлять) мы указываем длину списка (Listbox.size()).
  • Ну и наконец о строке Tk.resizable(0, 0). С помощью этого метода можно запретить растягивание окна по ширине (первый параметр) и по высоте (второй параметр). Нули, в данном случае, просто синонимы False.
Рисунок 2. Окно программы (см. рисунок 1)
Рисунок 2. Окно программы (см. рисунок 1)

Пока всё! Продолжение следует...

Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.

Списки, говорите, составляете? Ну, ну
Списки, говорите, составляете? Ну, ну