Button

Віджет Button – клас кнопки.

Загальний синтаксис:

name = Button(window)

name – ім'я кнопки, window – ім'я вікна, на якому вона розташовується

Властивості віджета Button

Змінити властивість кнопки або будь-якого іншого віджета можна так:

ім'я_віджета ["ім'я_властивості"] = значення

Також можна скористатись методом config():

ім'я_віджета.config(ім'я_властивості = значення)

Встановлення дії на кнопку

º Властивість command

Для того, щоб встановити дію, яка буде відбуватися після натиснення на кнопку, користуються властивістю command. Дії прописуються за допомогою користувацької функції. Наведемо приклад: потрібно на кнопку button1 встановити дію зміни кольору кнопки на фіолетовий.

Створюємо функцію f, яка змінює колір на фіолетовий (колір задано шістнадцятковим кодом):

def f():
  button1['bg'] = '#C9A0DC'

Використовуємо команду command при зміні конфігурації кнопки для установлення дії, визначеної функцією f:

button1.config(command=f)  

º Метод bind

У tkinter за допомогою методу bind() між собою зв'язуються віджет, подія і дія. Наприклад, віджет — кнопка, подія — натиснення на кнопку лівою клавішею миші, дія — зміна кольору кнопки.

Загальний синтаксис:

ім'я_віджета.bind(подія, дія)

Дія оформлюється як функція!

Можливі такі події:

  • <Button-1> або <1> — натиснута ліва клавіша миші.
  • <Button-2> або <2> — натиснута середня клавіша миші (якщо вона є).
  • <Button-3> або <3> — натиснута права клавіша миші.
  • <Alt-Motion> — рух мишею з натиснутою на клавіатурі клавішею Alt.
  • <Key> — натискання будь-якої клавіші на клавіатурі.
  • <Return> — натиснута клавіша Enter на клавіатурі.

Більший список подій можна знайти тут.

Наведемо приклад: потрібно на кнопку button1 встановити дію зміни кольору кнопки на фіолетовий.

Створюємо функцію f, яка змінює колір на фіолетовий (колір задано шістнадцятковим кодом):

def f():
  button1['bg'] = '#C9A0DC'

Використовуємо метод bind для установлення дії, визначеної функцією f, на подію "Натиснута ліва клавіша миші":

button1.bind("<Button-1>", f)

Зверніть увагу, що подія береться у лапки.

Приклади застосування

Завдання 1. Створити кнопку, після натиснення на яку змінюється колір її фону та тексту.

from tkinter import *                           # імпортування графічної бібліотеки
 
root = Tk()
butt = Button(text="Змінити колір",             # задання тексту на кнопці
              width=20,                         # ширина
              height=5)                         # висота
 
# програмуємо дію за допомогою функції
def change():
  butt['text'] = "Колір змінено"                # текст на кнопці
  butt['bg'] = '#A4C639'                        # колір фону після натискання, заданий шістнадцятковим кодом
  butt['activebackground'] = '#E32636'          # колір фону після повторного натискання (або під час розміщення курсора
                                                # над кнопкою)
  butt['fg'] = '#333399'                        # колір тексту після натискання
  butt['activeforeground'] = '#FDE910'          # колір тексту після повторного натискання (або під час розміщення 
                                                # курсора над кнопкою)
 
butt.config(command=change)                     # command установлює дію на кнопку
 
butt.pack()                                     # розміщення кнопки у вікні
root.mainloop()                                 # задання команди відображення вікна при запуску

Завдання 2. Створити дві кнопки: після натиснення на першу друкуватиметься фраза «I like Tkinter!», а на другу – закриватиметься головне вікно.

from tkinter import *            #  імпортування графічної бібліотеки
 
root = Tk()                      #  створення головного вікна
 
frame = Frame(root)              #  створення фрейму, у якому розміщуватимуться кнопки
frame.pack()
 
def write():                     #  створення функції для друку фрази
  print("I like Tkinter!")
 
# створення кнопки для друку
tk_button = Button(frame, text="Tkinter", command=write)
tk_button.pack(side=LEFT)
 
# створення кнопки, що закриває вікно (вбудована команда quit)
quit_button = Button(frame, text="QUIT", fg="red", command=quit)
quit_button.pack(side=LEFT)
 
root.mainloop()                  #  задання команди відображення вікна при запуску