Tkinter.Button: примеры (PYTHON)

Создание кнопок в Tkinter с помощью функции Button
Раздел: GUI, Виджеты
tkinter.Button(master: widget, **options): Button object

Функция tkinter.Button в библиотеке Tkinter

Функция tkinter.Button является конструктором класса Button, который создает кнопочный виджет в графических интерфейсах Tkinter. Этот виджет применяется для создания интерактивных кнопок, которые пользователь может нажимать для выполнения определенных действий.

Основные аргументы функции:

  • master (обязательный): родительское окно или фрейм, где размещается кнопка.
  • text: текст, отображаемый на кнопке.
  • command: функция или метод, выполняемый при нажатии кнопки.
  • image: изображение, отображаемое на кнопке вместо текста.
  • width и height: размеры кнопки в символах или пикселях.
  • fg и bg: цвета текста и фона.
  • font: шрифт для текста.
  • state: состояние кнопки (normal, disabled, active).
  • relief: стиль границы (flat, raised, sunken, groove, ridge).
  • anchor: выравнивание содержимого (n, s, e, w, center).
  • cursor: вид курсора при наведении.

Конструктор возвращает экземпляр класса Button, который затем может быть размещен с помощью менеджеров геометрии pack, grid или place.

Примеры использования tkinter.Button

Простая текстовая кнопка

import tkinter as tk

def button_click():
    label.config(text="Кнопка нажата")

root = tk.Tk()
button = tk.Button(root, text="Нажми меня", command=button_click)
button.pack()
label = tk.Label(root, text="Ожидание")
label.pack()
root.mainloop()
Создается окно с кнопкой и меткой. При нажатии на кнопку текст метки меняется.

Кнопка с изображением

import tkinter as tk

root = tk.Tk()
photo = tk.PhotoImage(file="icon.png")
button = tk.Button(root, image=photo)
button.pack()
root.mainloop()
Создается кнопка с изображением из файла icon.png.

Кнопка с измененным состоянием

import tkinter as tk

root = tk.Tk()
button = tk.Button(root, text="Неактивная", state="disabled")
button.pack()
root.mainloop()
Создается неактивная кнопка, которая не реагирует на нажатия.

Похожие виджеты в Tkinter

tkinter.Label используется для отображения статического текста или изображений, но не поддерживает команды нажатия.

tkinter.Checkbutton и tkinter.Radiobutton являются специализированными кнопками с состояниями выбора.

ttk.Button из модуля ttk предоставляет стилизованные кнопки с поддержкой тем оформления. Их применяют для современных интерфейсов.

Аналоги в других языках программирования

JavaScript (HTML)

Создается HTML-кнопка с обработчиком события click.

Java (Swing)

JButton button = new JButton("Нажми меня");
button.addActionListener(e -> System.out.println("Нажато"));
Создается кнопка с использованием библиотеки Swing.

C# (Windows Forms)

Button button = new Button();
button.Text = "Нажми меня";
button.Click += (sender, e) => MessageBox.Show("Нажато");
Создается кнопка в Windows Forms с обработчиком события Click.

Типичные ошибки

Передача функции со скобками в command

button = tk.Button(root, text="Ошибка", command=some_function())
Функция выполняется сразу при создании кнопки. Правильно передавать ссылку на функцию без скобок.

Использование после уничтожения окна

import tkinter as tk

root = tk.Tk()
button = tk.Button(root, text="Кнопка")
button.pack()
root.destroy()
button.config(text="Новый текст")
Ошибка TclError, так как попытка изменить виджет после уничтожения окна.

Изменения в последних версиях

В Tkinter 8.6 были улучшены параметры отображения на высокодюймовых экранах. Добавлена лучшая поддержка стилей для ttk.Button. Изменений в основных аргументах функции не было.

Расширенные примеры

Динамическое изменение свойств кнопки

Пример python
import tkinter as tk

def toggle():
    if button["state"] == tk.NORMAL:
        button.config(state=tk.DISABLED, text="Отключена")
    else:
        button.config(state=tk.NORMAL, text="Активна")

root = tk.Tk()
button = tk.Button(root, text="Активна", command=toggle)
button.pack()
root.mainloop()
Кнопка переключает свое состояние между активным и неактивным при каждом нажатии.

Кнопка с градиентным фоном через Canvas

Пример python
import tkinter as tk

root = tk.Tk()
canvas = tk.Canvas(root, width=200, height=100)
canvas.pack()
button_id = canvas.create_rectangle(50, 25, 150, 75, fill="gray")
text_id = canvas.create_text(100, 50, text="Нажми")

canvas.tag_bind(button_id, "", lambda e: print("Нажато"))
canvas.tag_bind(text_id, "", lambda e: print("Нажато"))
root.mainloop()
Создается имитация кнопки с использованием Canvas для кастомного оформления.

питон tkinter.Button function comments

En
Tkinter.Button Create button widget