На этом шаге мы рассмотрим назначение, свойства и пример использования этого виджета.
Виджет раскрывающегося списка представляет класс 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.