Получить текст выбранной контрольной кнопки- tkinter

#python #user-interface #tkinter

#python #пользовательский интерфейс #tkinter

Вопрос:

Я создаю графический интерфейс в tkinter, у меня есть 3 флажка:

     var1 = IntVar () #assing variable for the model selection- user select PLS
    Checkbutton (top, text="PLSR", variable=var1).grid (row=11,column=1,sticky='W' )
    var2 = IntVar () #user select RF model
    Checkbutton (top, text="Random forest", variable=var2).grid (row=12, column=1,sticky='W' )
    var3=IntVar () #user select SVR model
    Checkbutton (top, text="SVR", variable=var3).grid (row=13, column=1,sticky='W')
 

Я хочу получить текст (PLSR / RF / SVR) выбранной контрольной кнопки. Если пользователь выберет первое, я хочу напечатать PLSR и так далее.
Я знаю метод cget(«text»), но как я узнаю, какая контрольная кнопка выбрана из трех?(можно выбрать только один)

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

1. Вы можете установить onvalue значение, совпадающее с текстом Checkbutton .

2. но мне все равно нужно знать, какая кнопка выбрана. откуда я это знаю?

3. Если вы установили offvalue значение None или "" , то вы можете использовать значения StringVar , чтобы узнать, какие контрольные кнопки проверены.

4. Если вы хотите, чтобы можно было выбрать только один вариант, вам следует использовать Radiobutton вместо Checkbutton .

Ответ №1:

Вы можете использовать команду, как показано ниже, а затем просто прочитать значения «whichButton», чтобы определить, какая кнопка выбрана.

 whichButton = ""
    
def command1():
       global whichButton
       whichButton = "PLSR"
       print(whichButton)

    
def command2():
       global whichButton
       whichButton = "Random forest"
       print(whichButton)

def command3():
       global whichButton
       whichButton = "SVR"
       print(whichButton)

Checkbutton (top, text="PLSR", variable=var1,command=command1).grid (row=11,column=1,sticky='W' )

Checkbutton (top, text="Random forest", variable=var2,command=command2).grid (row=12, 
        column=1,sticky='W' )

Checkbutton (top, text="SVR", variable=var3,command=command3).grid (row=13, column=1,sticky='W')
 

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

1. Вам не хватает : определения функций.

2. спасибо за ваше предложение, я его отредактировал.

Ответ №2:

Вы можете попробовать функцию radiobutton. вот так python var1 = StringVar() #variable var1 = Radiobutton(text="Paid", font=("Arial Rounded MT Bold", 15),variable=var1,value="Paid").place(x=520, y=290)

Ответ №3:

Контрольные кнопки предназначены для выполнения множественного выбора. Если вы хотите разрешить пользователю делать только один выбор, вам следует использовать Radiobutton. Не только потому, что так разработан tkinter, но и потому, что различие между радиокнопками и контрольными кнопками универсально и хорошо понятно большинству пользователей.

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

 var = StringVar(value="PLSR")
Radiobutton (top, text="PLSR", variable=var, value="PLSR")
Radiobutton (top, text="Random forest", variable=var, value="Random forest")
Radiobutton (top, text="SVR", variable=var, value="SVR")
 

С помощью приведенного выше кода, когда вы получите значение переменной, вы получите либо «PLSR», либо «Случайный лес», либо «SVR».

скриншот