Вывод текста при изменении состояния Radiobutton Python
Делаю проект мини-тест, нужно чтобы когда состояние radiobutton'а var1 - менялось на ACTIVE, то в консоль выводился текст, не понимаю как это сделать?
var1 = Radiobutton(win, text='У меня отличное настроение', variable = varik, value = 1)
var2 = Radiobutton(win, text='Я чувствую небольшую грусть', variable = varik, value = 2)
var3 = Radiobutton(win, text='Мне грустно и тоскливо', variable = varik, value = 3)
var4 = Radiobutton(win, text='Я постоянно грущу, иногда без повода', variable = varik,
value = 4)
if var1['state'] == ACTIVE:
print('var1 active')
var1.pack()
var2.pack()
var3.pack()
var4.pack()
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
При клике на радио-кнопки вызывается change:
from tkinter import *
win = Tk()
r_var = IntVar()
r_var.set(1)
def change():
value = r_var.get()
print(f'var{value} active')
r1 = Radiobutton(win, text='У меня отличное настроение', variable=r_var, command=change, value=1)
r2 = Radiobutton(win, text='Я чувствую небольшую грусть', variable=r_var, command=change, value=2)
r3 = Radiobutton(win, text='Мне грустно и тоскливо', variable=r_var, command=change, value=3)
r4 = Radiobutton(win, text='Я постоянно грущу, иногда без повода', variable=r_var, command=change, value=4)
r1.pack()
r2.pack()
r3.pack()
r4.pack()
win.mainloop()
Можно привязать функцию через bind, тогда в функцию будет передаваться событие, а него можно получить виджет
Пример:
from tkinter import *
win = Tk()
r_var = IntVar()
r_var.set(1)
def change(event):
value = r_var.get()
text = event.widget['text']
print(f'var{value} active, widget={text!r}')
r1 = Radiobutton(win, text='У меня отличное настроение', variable=r_var, value=1)
r1.bind("<Button-1>", change)
r1.pack()
r2 = Radiobutton(win, text='Я чувствую небольшую грусть', variable=r_var, value=2)
r2.bind("<Button-1>", change)
r2.pack()
r3 = Radiobutton(win, text='Мне грустно и тоскливо', variable=r_var, value=3)
r3.bind("<Button-1>", change)
r3.pack()
r4 = Radiobutton(win, text='Я постоянно грущу, иногда без повода', variable=r_var, value=4)
r4.bind("<Button-1>", change)
r4.pack()
win.mainloop()