#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».