Radiobutton является стандартным Виджет Tkinter используется для реализации выбора одного из многих. Radiobuttons может содержать текст или изображения, и вы можете связать функцию или метод Python с каждой кнопкой. При нажатии кнопки, Tkinter автоматически вызывает эту функцию или метод.
Синтаксис:
button = Radiobutton(master, text=”Name on Button”, variable = “shared variable”, value = “values of each button”, options = values, …)
shared variable = Переменная Tkinter, общая для всех переключателей.
value = каждый radiobutton должен иметь разное значение, иначе будет выбрано более 1 radiobutton.
Код № 1:
Переключатели, но не в виде кнопок, а в виде button box. Для того, чтобы отобразить окно кнопок, индикатор/индикатор параметр должен быть установлен на 0.
# Importing Tkinter module
from tkinter import *
# from tkinter.ttk import *
# Creating master Tkinter window
master = Tk()
master.geometry("175x175")
# Tkinter string variable
# able to store any string value
v = StringVar(master, "1")
# Dictionary to create multiple buttons
values = {"RadioButton 1" : "1",
"RadioButton 2" : "2",
"RadioButton 3" : "3",
"RadioButton 4" : "4",
"RadioButton 5" : "5"}
# Loop is used to create multiple Radiobuttons
# rather than creating each button separately
for (text, value) in values.items():
Radiobutton(master, text = text, variable = v,
value = value, indicator = 0,
background = "light blue").pack(fill = X, ipady = 5)
# Infinite loop can be terminated by
# keyboard or mouse interrupt
# or by any predefined function (destroy())
mainloop()
Выход:
Фон этих кнопок светло-голубой. Выбраны кнопки с белым фоном, а также утопленные.
Код № 2:
Изменение кнопок в стандартных переключателях. Для этого удалите параметр indicatoron.
# Importing Tkinter module
from tkinter import *
from tkinter.ttk import *
# Creating master Tkinter window
master = Tk()
master.geometry("175x175")
# Tkinter string variable
# able to store any string value
v = StringVar(master, "1")
# Dictionary to create multiple buttons
values = {"RadioButton 1" : "1",
"RadioButton 2" : "2",
"RadioButton 3" : "3",
"RadioButton 4" : "4",
"RadioButton 5" : "5"}
# Loop is used to create multiple Radiobuttons
# rather than creating each button separately
for (text, value) in values.items():
Radiobutton(master, text = text, variable = v,
value = value).pack(side = TOP, ipady = 5)
# Infinite loop can be terminated by
# keyboard or mouse interrupt
# or by any predefined function (destroy())
mainloop()
Выход:
Эти радиокнопки создаются с помощью tkinter.ttk вот почему опция фона недоступна, но мы можем использовать класс стиля чтобы сделать укладку.
Код № 3:
Добавление стиля к переключателю с помощью класса стиля.
# Importing Tkinter module
from tkinter import *
from tkinter.ttk import *
# Creating master Tkinter window
master = Tk()
master.geometry('175x175')
# Tkinter string variable
# able to store any string value
v = StringVar(master, "1")
# Style class to add style to Radiobutton
# it can be used to style any ttk widget
style = Style(master)
style.configure("TRadiobutton", background = "light green",
foreground = "red", font = ("arial", 10, "bold"))
# Dictionary to create multiple buttons
values = {"RadioButton 1" : "1",
"RadioButton 2" : "2",
"RadioButton 3" : "3",
"RadioButton 4" : "4",
"RadioButton 5" : "5"}
# Loop is used to create multiple Radiobuttons
# rather than creating each button separately
for (text, value) in values.items():
Radiobutton(master, text = text, variable = v,
value = value).pack(side = TOP, ipady = 5)
# Infinite loop can be terminated by
# keyboard or mouse interrupt
# or by any predefined function (destroy())
mainloop()
Выход:
Вы можете заметить, что изменился стиль шрифта, а также цвета фона и переднего плана.