You are currently viewing RadioButton in Tkinter | Python

RadioButton in Tkinter | Python

 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()

Выход:

Вы можете заметить, что изменился стиль шрифта, а также цвета фона и переднего плана.