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. Створити вікно з перемикачами для вибору класу, у якому ти навчаєшся. Після того, як клас обрано, повинна з'явитись мітка з текстом "Ти навчаєшся у ... класі", де на місці крапок — значення обраного перемикача.

Вказівка. Якщо у вікні потрібно розмістити більше, ніж 3 перемикачі, доцільно скористатися циклом for.
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()                  #  задання команди відображення вікна при запуску