Виджет OptionMenu (выпадающий список опций) в Tkinter

Виджет OptionMenu в Tkinter: создание и примеры

OptionMenu в Tkinter — это вид виджета, который предлагает выпадающий список опций пользователю. В отличие от Combobox в ttk, который позволяет пользователю вводить свои данные, OptionMenu предоставляет только заранее заданный набор опций.

Создание OptionMenu

Создание виджета OptionMenu в Tkinter осуществляется с помощью конструктора OptionMenu(). Простейший пример создания OptionMenu:

import tkinter as tk

root = tk.Tk()

# Создаем переменную для хранения выбранного значения
selected_option = tk.StringVar()

# Создаем список опций
options = ["Option 1", "Option 2", "Option 3"]

# Создаем OptionMenu
option_menu = tk.OptionMenu(root, selected_option, *options)
option_menu.pack()

root.mainloop()

Свойства OptionMenu

  • bg: задает фоновый цвет.
  • fg: задает цвет текста.
  • font: задает шрифт текста.
  • height: задает высоту виджета.
  • width: задает ширину виджета.
  • activebackground: задает цвет фона в активном состоянии.
  • activeforeground: задает цвет текста в активном состоянии.
  • bd: задает размер границы вокруг элемента.
  • cursor: изменяет форму курсора при наведении на виджет.
  • direction: определяет расположение выпадающего меню.
  • disabledforeground: задает цвет текста, когда виджет отключен.
  • highlightcolor: цвет подсветки, когда виджет имеет фокус.
  • justify: определяет выравнивание текста в меню.
  • menu: ассоциированное с виджетом меню.
  • relief: тип границы, принимает значения SUNKEN, RAISED, GROOVE, и RIDGE.
  • state: состояние виджета. Может быть NORMAL, ACTIVE, или DISABLED.
  • textvariable: ассоциированная с виджетом контрольная переменная (обычно это StringVar).

Методы OptionMenu

  • getvar(name=PY_VAR): возвращает значение контрольной переменной.
  • setvar(name=PY_VAR, value): устанавливает значение контрольной переменной.
  • destroy(): уничтожает виджет.
  • focus(): устанавливает фокус на виджет.
  • mainloop(): запускает главный цикл Tkinter.

Пример использования OptionMenu

import tkinter as tk

def print_option():
    print(f"Вы выбрали: {selected_option.get()}")

root = tk.Tk()

selected_option = tk.StringVar()

options = ["Option 1", "Option 2", "Option 3"]

option_menu = tk.OptionMenu(root, selected_option, *options)
option_menu.pack()

print_button = tk.Button(root, text="Print option", command=print_option)
print_button.pack()

root.mainloop()

Заключение

OptionMenu — это полезный и гибкий виджет в библиотеке Tkinter, который помогает в создании интерактивных и дружественных к пользователю интерфейсов. Будьте творческими и экспериментируйте с этим виджетом, чтобы лучше удовлетворить потребности вашего приложения.

Содержание: