Кнопки

Поділитись

Тулкит tkinter содержит набор компонентов или виджетов, одним из которых является кнопка. Добавим кнопку в окно:

1
2
3
4
5
6
7
8
9
10
from tkinter import * 

root = Tk()

root.title("GUI на Python")
root.geometry("300x250")
 btn = Button(text="Hello")
btn.pack()
 
root.mainloop()

Для создания кнопки используется конструктор Button(). В этом конструкторе с помощью параметра text можно установить текст кнопки.

Чтобы сделать элемент видимым, у него вызывается метод pack(). В итоге вверху окна будет красоваться кнопка:

Кнопка в tkinter в Python

Каждый виджет, в том числе кнопка, имеет ряд атрибутов, которые влияют на ее визуализацию и которые мы можем настроить через конструктор:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from tkinter import *
 
root = Tk()
root.title("GUI на Python")
root.geometry("300x250")
 
btn = Button(text="Hello",          # текст кнопки
background="#555",     # фоновый цвет кнопки
foreground="#ccc",     # цвет текста
padx="20",             # отступ от границ до содержимого по горизонтали
pady="8",              # отступ от границ до содержимого по вертикали
font="16"              # высота шрифта
)
btn.pack()
 
root.mainloop()

Параметры pady, padx, font принимают числовое значение, а параметры background и foreground получают шестнадцатеричное значение цвета. Параметр font содержит определение шрифта.

Настройка кнопки в tkinter и Python

Всего же конструктор Button может принимать следующие параметры:

1Button (master, options)

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

1
2
3
4
5
6
root = Tk()

root.title("GUI на Python")
root.geometry("300x250") 
btn = Button(root, text="Hello")
btn.pack()

Однако если в коде создается одно окно, то кнопка и любой другой элемент уже по умолчанию размещаются в этом окне. Поэтому первый параметр мы можем опустить, как в примерах выше. Если бы у нас в коде создавалось бы несколько окон, тогда мы могли бы передать в конструктор Button ссылку на нужное окно.

Второй параметр options представляет набор на самом деле набор параметров, которые мы можем установить по их имени:

  • activebackground: цвет кнопки, когда она находится в нажатом состоянии
  • activeforeground: цвет текста кнопки, когда она в нажатом состоянии
  • bd: толщина границы (по умолчанию 2)
  • bg/background: фоновый цвет кнопки
  • fg/foreground: цвет текста кнопки
  • font: шрифт текста, например, font="Arial 14" — шрифт Arial высотой 14px, или font=("Verdana", 13, "bold") — шрифт Verdana высотой 13px с выделением жирным
  • height: высота кнопки
  • highlightcolor: цвет кнопки, когда она в фокусе
  • image: изображение на кнопке
  • justify: устанавливает выравнивание текста. Значение LEFT выравнивает текст по левому краю, CENTER — по центру, RIGHT — по правому краю
  • padx: отступ от границ кнопки до ее текста справа и слева
  • pady: отступ от границ кнопки до ее текста сверху и снизу
  • relief: определяет тип границы, может принимать значения SUNKEN, RAISED, GROOVE, RIDGE
  • state: устанавливает состояние кнопки, может принимать значения DISABLED, ACTIVE, NORMAL (по умолчанию)
  • text: устанавливает текст кнопки
  • textvariable: устанавливает привязку к элементу StringVar
  • underline: указывает на номер символа в тексте кнопки, который подчеркивается. По умолчанию значение -1, то есть никакой символ не подчеркивается
  • width: ширина кнопки
  • wraplength: при положительном значении строки текста будут переносится для вмещения в пространство кнопки

Обработка нажатия на кнопку

Для обработки нажатия на кнопку необходимо установить в конструкторе параметр command, присвоив ему ссылку на функцию, которая будет срабатывать при нажатии:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from tkinter import *
 
clicks = 0
 
 
def click_button():
global clicks
clicks += 1
root.title("Clicks {}".format(clicks))
 
root = Tk()
root.title("GUI на Python")
root.geometry("300x250")
 
btn = Button(text="Click Me", background="#555", foreground="#ccc",
padx="20", pady="8", font="16", command=click_button)
btn.pack()
 
root.mainloop()

Здесь в качестве обработчика нажатия устанавливается функция click_button. В этой функции изменяется глобальная переменная clicks, которая хранит число кликов, и ее значение выводится в заголовок окна. Таким образом, при каждом нажатии кнопки будет срабатывать функция click_button, и количество кликов будет увеличиваться:

Настройка кнопки в tkinter и Python

Поділитись