Radiobutton
Віджет Radiobutton – клас перемикачів (радіокнопок).
Загальний синтаксис:
name = Radiobutton(window)
name – ім'я перемикача, window – ім'я вікна, на якому він розташовується
Властивості віджета Radiobutton
По замовчуванню перемикачі, розміщені на спільному вікні, не пов'язані один з одним і одночасно увімкнені. Зв'язок встановлюється через загальну змінну, різні значення якої відповідають включенню різних перемикачів у групі. У всіх перемикачів однієї групи властивість variable встановлюється в одне і те ж значення – пов'язану з групою змінну. А властивості value присвоюються різні значення цієї змінної.
Tkinter не може використовувати будь-яку змінну для зберігання станів віджетів. Для цих цілей передбачені спеціальні класи-змінні пакета tkinter – BooleanVar (приймає булеві значення), IntVar (приймає цілі значення), DoubleVar (приймає дробові та цілі значення), StringVar (приймає рядкові значення).
Таким чином, вибрати одну радіокнопку можна тільки серед групи радіокнопок, тобто у яких значення параметра variable рівні.
Приклад:
var = IntVar() # створюємо змінну, яка приймає цілі значення
var.set(1) # встановлюємо перше значення для створеної змінної
rad1 = Radiobutton(root, text="Перша", variable=var, value=1) # створюємо перемикач зі значенням 1
rad2 = Radiobutton(root, text="Друга", variable=var, value=2) # створюємо перемикач зі значенням 2
rad3 = Radiobutton(root, text="Третя", variable=var, value=3) # створюємо перемикач зі значенням 3
# розміщуємо перемикачі у вікні
rad1.pack()
rad2.pack()
rad3.pack()
Результат:
Приклади застосування
Завдання 1. Створити вікно з двома перемикачами з підписами «Синій» та «Жовтий», після вибору яких автоматично змінюється колір фону тексту, розташованого нижче.
from tkinter import * # імпортування графічної бібліотеки
root = Tk() # створення головного вікна
val = StringVar() # створення змінної для зв'язку між перемикачами
val.set("blue") # встановлення першого значення для створеної змінної
def color(): # створення функції для зміни кольору фону тексту
label.config(bg=val.get())
# створення перемикачів
blue = Radiobutton(root, text="Синій", variable=val, value="blue", command=color) # команда command прив'язує подію
blue.pack()
yellow = Radiobutton(root, text="Жовтий", variable=val, value="yellow", command=color)
yellow.pack()
# створення тексту
label = Label(root, text="Текст")
label.pack()
root.mainloop() # задання команди відображення вікна при запуску
Завдання 2. Створити вікно з перемикачами для вибору класу, у якому ти навчаєшся. Після того, як клас обрано, повинна з'явитись мітка з текстом "Ти навчаєшся у ... класі", де на місці крапок — значення обраного перемикача.
from tkinter import * # імпортування графічної бібліотеки
# функція для зміни тексту мітки lab2, яку створимо нижче
def f():
lab2.config(text="Ти навчаєшся у %s класі" % val.get())
root = Tk() # створення головного вікна
lab1 = Label(root, text='Обери свій клас') # створення та розміщення мітки з текстом "Обери свій клас"
lab1.pack()
val = IntVar() # створення змінної для зв'язку між перемикачами, яка приймає цілі значення
val.set(1) # встановлення першого значення для створеної змінної
# розміщення радіокнопок за допомогою циклу for
for i in range(11):
Radiobutton(root, text='%s клас' % str(i+1), variable=val, value=i+1, command=f).pack()
lab2 = Label(root, fg='red') # створення та розміщення мітки (значення тексту змінюємо у функції f() вище)
lab2.pack()
root.mainloop() # задання команди відображення вікна при запуску