are cleared (they don' have the value " "that' not normally what you want--radio buttons are usually single-choice group (check buttons handle multiple-choice inputsif you want them to work as expectedbe sure to give each radio button the same variable but unique value across the entire group in the demoradio scriptfor instancethe name of the demo provides naturally unique value for each button radio buttons without variables strictly speakingwe could get by without tkinter variables heretoo example - for instanceimplements single-selection model without variablesby manually selecting and deselecting widgets in the groupin callback handler of its own on each press eventit issues deselect calls for every widget object in the group and select for the one pressed example - pp \gui\tour\demo-radio-manual py ""radio buttonsthe hard way (without variablesnote that deselect for radio buttons simply sets the button' associated value to null stringso we either need to still give buttons unique valuesor use checkbuttons here instead""from tkinter import state 'buttons [def onpress( )global state state for btn in buttonsbtn deselect(buttons[iselect(root tk(for in range( )rad radiobutton(roottext=str( )value=str( )command=(lambda =ionpress( )rad pack(side=leftbuttons append(radonpress( root mainloop(print(stateselect first initially show state on exit this works it creates -radio button window that looks just like the one in figure - but implements single-choice radio-style interfacewith current state available in global python variable printed on script exit by associating tkinter variables and unique valuesthoughyou can let tkinter do all this work for youas shown in example - checkbuttonradiobuttonand scale