Вот как настроить кнопки, а также переменную IntVar
, которую я назвал choice
, для хранения значения, соответствующего Radiobutton
, который в данный момент «вставлен» (если есть). Я также сделал это и атрибуты списка rb
экземпляра класса GUI
, поставив перед ними префикс self.
. Это позволит ссылаться на них из других методов класса, поскольку все методы автоматически передаются self
в качестве первого аргумента.
Чтобы продемонстрировать, как можно использовать эти атрибуты экземпляра, код также используетcommand=
опция, которая Radiobutton
s должна указывать функцию "обратного вызова", которая будет вызываться каждый раз, когда пользователь меняет свое состояние.
from tkinter import *
SubTests = ['Test 1', 'Test 2', 'Test 3', 'Test 4', 'Test 5', 'Test 6', 'Test 7',
'Test 8', 'Test 9', 'Test 10']
class GUI:
def __init__(self, master=None):
self.master = master
self.choice = IntVar(value=-1) # Set to a value no button will produce.
self.rb = []
for i, subtest in enumerate(SubTests):
radio_btn = Radiobutton(master, text=subtest, fg='black', value=i,
variable=self.choice, command=self.btn_callback)
radio_btn.grid(column=0, row=i+2, sticky=W, padx=5)
self.rb.append(radio_btn)
def btn_callback(self):
choosen = self.choice.get() # Index of button pressed.
subtest = self.rb[choosen].cget('text') # Button's text.
print('You chose: {}'.format(subtest))
root = Tk()
root.geometry('940x550')
root.resizable(FALSE, FALSE)
root.title("GUI Template")
display = GUI(root)
root.mainloop()