GUI Programming

Создание динамических выпадающих меню с помощью Tkinter

Spread the love

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

Содержание

  1. Создание базового выпадающего меню
  2. Реакция на изменение выбора

Создание базового выпадающего меню

Основой выпадающего меню Tkinter является виджет ttk.OptionMenu. Этот пример демонстрирует его базовую реализацию:


import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("Базовое выпадающее меню Tkinter")

selected_option = tk.StringVar(root)
selected_option.set("Вариант 1")  # Значение по умолчанию

options = ["Вариант 1", "Вариант 2", "Вариант 3"]

option_menu = ttk.OptionMenu(root, selected_option, *options)
option_menu.pack(pady=20)

root.mainloop()

Этот код создает окно, инициализирует StringVar для хранения выбранного варианта, определяет список вариантов и использует ttk.OptionMenu для создания выпадающего меню. *options распаковывает список, предоставляя каждый вариант в качестве отдельного аргумента для OptionMenu. Выбранное значение автоматически обновляется в selected_option.

Реакция на изменение выбора

Чтобы добавить интерактивность, мы можем выполнить код всякий раз, когда пользователь выбирает другой вариант. Это делается с помощью метода trace переменной StringVar:


import tkinter as tk
from tkinter import ttk

def option_changed(new_value):
    print(f"Выбранный вариант: {new_value}")
    # Добавьте свои пользовательские действия здесь, например, обновите другие виджеты,
    # сделайте сетевые запросы и т. д.

root = tk.Tk()
root.title("Интерактивное выпадающее меню Tkinter")

selected_option = tk.StringVar(root)
selected_option.set("Вариант 1")

options = ["Вариант 1", "Вариант 2", "Вариант 3"]

option_menu = ttk.OptionMenu(root, selected_option, *options)
option_menu.pack(pady=20)

selected_option.trace("w", lambda *args: option_changed(selected_option.get()))

root.mainloop()

Функция option_changed вызывается всякий раз, когда изменяется переменная selected_option. Метод trace("w", ...) регистрирует эту функцию для вызова при записи в переменную. Лямбда-функция гарантирует, что текущее значение передается в option_changed. Замените инструкцию print логикой вашего приложения.

Этот подход создает динамическое и отзывчивое выпадающее меню, улучшая взаимодействие с пользователем и функциональность приложения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *