Шаг 41.
Библиотека Tkinter. Компоненты и вспомогательные классы. Стилизуемые компоненты. Компонент Combobox: раскрывающийся список

    На этом шаге мы рассмотрим назначение, свойства и пример использования этого виджета.

    Виджет раскрывающегося списка представляет класс Combobox. Значение, заносимое в него, можно как выбрать из представленного в списке набора, так и ввести вручную. Поддерживаемые этим компонентом опции таковы:

    Компонент Сombobox поддерживает следующие методы:

    Использование для работы с введенным в компонент значением методов get() и set() является неплохой альтернативой применению метапеременной.

    При выборе пункта списка в компоненте возникает виртуальное событие ComboboxSelected.

    Пример использования раскрывающегося списка показан далее. В списке выводятся названия компьютерных платформ и библиотек, а при выборе пункта под списком показывается номер версии соответствующей платформы или библиотеки:

import tkinter
import tkinter.ttk

class Application(tkinter.ttk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        # Обязательно указываем ширину и высоту контейнера посредством
        # опций width и height соответственно
        self.configure(width=200, height=100)
        self.pack(padx=4, pady=4)
        self.create_widgets()
        self.master.title("Пример использования ComboBox")
        # Запрещаем изменять размеры окна
        self.master.resizable(False, False)

    def create_widgets(self):
        self.platforms = {"Python": "3.6.4", "Pillow": "1.1.7", "Tkinter": "8.5"}
        self.cboPlatforms = tkinter.ttk.Combobox(self, 
               values=list(self.platforms.keys()), exportselection=0)
        self.cboPlatforms.bind("<<ComboboxSelected>>", self.show)
        self.cboPlatforms.pack()
        self.lblVersion = tkinter.ttk.Label(self, text="")
        self.lblVersion.pack()

    def show(self, evt):
        version = self.platforms[self.cboPlatforms.get()]
        self.lblVersion["text"] = "Версия: " + version
          

root = tkinter.Tk()
app = Application(master=root)
root.mainloop()
Архив с файлом можно взять здесь.

    Результат работы приложения приведен на рисунке 1.


Рис.1. Результат работы приложения

    На следующем шаге мы рассмотрим виджет Scale.




Предыдущий шаг Содержание Следующий шаг