Как использовать значение переключателя в функции?

#python-3.x #tkinter

Вопрос:

Я пытаюсь создать простое приложение в Tkinter, но столкнулся с проблемой. Я пытаюсь использовать значение, определенное с помощью переключателя в функции, но, похоже, это не работает. Когда я нажимаю кнопку, ничего не печатается. Что я делаю не так?

 from tkinter import *


window = Tk()

window.title("ALL YOU NEED IS EXCEL")

window.geometry('500x200')


variable_1 = StringVar()

rad1 = Radiobutton(window,text='Button 1', value= "Button 1", variable= variable_1)

rad1.grid(column=0, row=4)

rad2 = Radiobutton(window,text='Button 2', value= "Button 2",variable= variable_1)

rad2.grid(column=1, row=4)


def clicked(vrijednost):
    if vrijednost == "Button 1":
        print("This is Button 1")
    
    if vrijednost == "Button 2":
        print("This is Button 2")

btn = Button(window, text="PRINT", height = 2,width = 15, command=clicked(variable_1))

#btn.grid(column=1, row=5)

btn.place(x = 250, y = 150)

window.mainloop()
 

Ответ №1:

Вместо передачи значения в функции вы можете использовать vrijednost = variable_1.get() внутри самого тела функции. Попробуйте выполнить следующий код:

 from tkinter import *

window = Tk()

window.title("ALL YOU NEED IS EXCEL")

window.geometry('500x200')


variable_1 = StringVar()

rad1 = Radiobutton(window,text='Button 1', value= "Button 1", variable= variable_1)

rad1.grid(column=0, row=4)

rad2 = Radiobutton(window,text='Button 2', value= "Button 2",variable= variable_1)

rad2.grid(column=1, row=4)


def clicked():
    vrijednost = variable_1.get()
    if vrijednost == "Button 1":
        print("This is Button 1")
    
    if vrijednost == "Button 2":
        print("This is Button 2")

btn = Button(window, text="PRINT", height = 2,width = 15, command=clicked)

#btn.grid(column=1, row=5)

btn.place(x = 250, y = 150)

window.mainloop()
 

Комментарии:

1. Просто для полноты картины вы также можете использовать command=lambda: clicked(variable_1.get())