Python GUI Programming

Полное руководство по ttk.Combobox в Tkinter

Spread the love

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

Оглавление:

  1. Базовый пример Combobox
  2. Настройка внешнего вида: шрифты и стили
  3. Обработка событий и взаимодействие с пользователем
  4. Динамическое обновление значений Combobox
  5. Создание полей со списком в режиме «только для чтения»

1. Базовый пример Combobox

Начнем с простого примера, иллюстрирующего создание и использование ttk.Combobox:


import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("Пример Combobox")

combo = ttk.Combobox(root, values=["Вариант 1", "Вариант 2", "Вариант 3"])
combo.pack(pady=20)
combo.current(0)  # Установить значение по умолчанию "Вариант 1"

root.mainloop()

Этот код создает главное окно, добавляет поле со списком с тремя предопределенными вариантами и устанавливает значение по умолчанию «Вариант 1». Не забудьте импортировать как tkinter, так и ttk.

2. Настройка внешнего вида: шрифты и стили

Вы можете настроить внешний вид поля со списком, например, его шрифт:


import tkinter as tk
from tkinter import ttk
import tkinter.font as tkFont

root = tk.Tk()
root.title("Пример стилизации Combobox")

myFont = tkFont.Font(family="Helvetica", size=12, weight="bold")
combo = ttk.Combobox(root, values=["Вариант A", "Вариант B", "Вариант C"], font=myFont)
combo.pack(pady=20)
combo.current(0)

root.mainloop()

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

3. Обработка событий и взаимодействие с пользователем

Чтобы реагировать на выбор пользователя, привяжите события к полю со списком. Событие <<ComboboxSelected>> срабатывает, когда пользователь выбирает элемент:


import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("Обработка событий Combobox")

def combo_selected(event):
    selected_item = combo.get()
    print(f"Выбранный элемент: {selected_item}")

combo = ttk.Combobox(root, values=["Вариант 1", "Вариант 2", "Вариант 3"])
combo.pack(pady=20)
combo.current(0)
combo.bind("<<ComboboxSelected>>", combo_selected)

root.mainloop()

Этот код определяет функцию combo_selected, которая выводит выбранный элемент. Метод bind связывает эту функцию с событием <<ComboboxSelected>>.

4. Динамическое обновление значений Combobox

Вы можете динамически обновлять параметры поля со списком во время выполнения:


import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("Динамический Combobox")

combo = ttk.Combobox(root)
combo.pack(pady=20)

def update_combo():
    new_values = ["Новый вариант 1", "Новый вариант 2", "Новый вариант 3"]
    combo["values"] = new_values

button = tk.Button(root, text="Обновить Combobox", command=update_combo)
button.pack()

root.mainloop()

Кнопка запускает функцию update_combo, которая изменяет атрибут values поля со списком.

5. Создание полей со списком в режиме «только для чтения»

Чтобы сделать поле со списком доступным только для чтения (запретить прямой ввод текста), используйте параметр state:


import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("Combobox только для чтения")

combo = ttk.Combobox(root, values=["Вариант 1", "Вариант 2", "Вариант 3"], state="readonly")
combo.pack(pady=20)
combo.current(0)

root.mainloop()

Установка state="readonly" отключает прямой ввод текста, позволяя только выбирать из выпадающего списка.

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

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