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() # задання команди відображення вікна при запуску