Python Tkinter:所有单选按钮都已选中

Python Tkinter:所有单选按钮都已选中,python,user-interface,tkinter,radio-button,Python,User Interface,Tkinter,Radio Button,这是我第一次使用tkinter。我在第一个窗口上有一个输入框,我在不同的窗口上创建了单选按钮。问题是,在单击其中任何一个之前,它们已被选中。如何更改所有要取消选择的按钮 我不确定我的代码是否正确 from tkinter import * from tkinter import messagebox class SortingHat: # Constructor def __init__(self): # Create main window self.__main_w

这是我第一次使用tkinter。我在第一个窗口上有一个输入框,我在不同的窗口上创建了单选按钮。问题是,在单击其中任何一个之前,它们已被选中。如何更改所有要取消选择的按钮

我不确定我的代码是否正确

from tkinter import *
from tkinter import messagebox

class SortingHat:
  # Constructor
  def __init__(self):
    # Create main window
    self.__main_window = Tk()
    self.__main_window.geometry('300x200')
    self.__main_window.title('Sorting Hat')

    bg_image = PhotoImage(file = "HarryPotterlogo1.png")
    bg_label = Label(self.__main_window, image = bg_image, bd=0)
    bg_label.grid(row=1, column=0)
    bg_label.image = bg_image

    self.__first_label = Label(self.__main_window, text = \
                               'Enter Your Name.', fg = 'gold', bg = 'brown4')
    self.__first_label.grid(row=2, column=0)

    # Create Entry box
    self.__entry = Entry(self.__main_window)
    self.__entry.bind('<Return>', self.entry_action)    
    self.__entry.grid(row=3, column=0)

    self.__button = Button(self.__main_window, text = 'Enter', \
                           fg = 'white', bg = 'black', command = self.action)
    self.__button.grid(row=3, column=0, sticky = 'E')

    self.__next_button = Button(text = 'Next', height = 1, width = 10, \
                                fg = 'black', bg = 'white', command = self.next1)
    self.__next_button.grid(row=4, column=0, sticky ='W')

    # Create OK button and Quit button

    self.__quit_button = Button(text='Quit', height = 1, width = 10, \
                                command=self.__main_window.destroy)
    self.__quit_button.grid(row=4, column=0, sticky = 'E')

  def next1(self):
    self.__new_window1 = Tk()
    self.__new_window1.configure(bg = 'brown4')
    self.__new_window1.title('Question 1')    

    self.__second_label = Label(self.__new_window1, text = \
                                'What is your favorite color?  (10 points)', \
                                fg = 'gold', bg = 'brown4')
    self.__second_label.grid(row=0, column=0, sticky = 'W')

    # Question Radiobutton
    self.__rb_var1 = IntVar()

    # Create First question Radiobutton widgets 
    self.__rb1 = Radiobutton(self.__new_window1, text='a. Red and Gold', fg ='red', \
                             bg = 'brown4', variable=self.__rb_var1, value = 1)
    self.__rb2 = Radiobutton(self.__new_window1, text='b. Green and Silver', fg = 'green', \
                             bg = 'brown4', variable=self.__rb_var1 , value = 2)
    self.__rb3 = Radiobutton(self.__new_window1, text='c. Yellow and Black', fg = 'gold', \
                             bg = 'brown4', variable=self.__rb_var1, value = 3)
    self.__rb4 = Radiobutton(self.__new_window1, text='d. Blue and Bronze', fg = 'blue', \
                             bg = 'brown4', variable=self.__rb_var1, value = 4)

    self.__rb1.grid(row=1, column=0)
    self.__rb2.grid(row=2, column=0)
    self.__rb3.grid(row=3, column=0)
    self.__rb4.grid(row=4, column=0)
从tkinter导入*
从tkinter导入消息框
分类帽:
#建造师
定义初始化(自):
#创建主窗口
self.\uuu主窗口=Tk()
自身主窗口几何(“300x200”)
self.\u主窗口标题('Sorting Hat')
bg_image=PhotoImage(file=“HarryPotterlogo1.png”)
bg_label=label(self.\uu主窗口,图像=bg_图像,bd=0)
bg_label.grid(行=1,列=0)
bg_label.image=bg_image
self.\uuuu first\u label=标签(self.\uuuu主窗口,文本=\
'输入您的姓名',fg='黄金',bg='棕色')
self.\uuu first\u label.grid(行=2,列=0)
#创建输入框
self.\uuuu entry=条目(self.\uuuu主窗口)
self.\u entry.bind(“”,self.entry\u action)
self.\u entry.grid(行=3,列=0)
self.\u按钮=按钮(self.\u主窗口,文本='Enter'\
fg='白色',bg='黑色',command=self.action)
self.\u button.grid(行=3,列=0,粘性='E')
self.\uuuu next\u button=按钮(文本='next',高度=1,宽度=10\
fg='黑色',bg='白色',command=self.next1)
self.\uuuu next\u button.grid(行=4,列=0,粘性=W')
#创建“确定”按钮和“退出”按钮
self.\uuuu quit\u button=按钮(text='quit',高度=1,宽度=10\
命令=self.\u主窗口.destroy)
self.\u退出\u按钮.grid(行=4,列=0,粘性=E)
def next1(自我):
self.\uuuu new\u window1=Tk()
self.\u新建\u窗口1.配置(bg='brown4')
self.\u新建\u窗口1.标题(“问题1”)
self.\uuuu second\u label=标签(self.\uuu new\u window1,文本=\
‘你最喜欢什么颜色?(10分)’\
fg=‘金色’,bg=‘棕色’)
self.\uuu second\u label.grid(行=0,列=0,粘性=W)
#问题单选按钮
self.\uuuu rb\u var1=IntVar()
#创建第一个问题Radiobutton小部件
self.\u rb1=单选按钮(self.\u new\u window1,text='a.Red and Gold',fg='Red'\
bg='brown4',变量=self.\uuuuRB\uVAR1,值=1)
self.\uuu rb2=单选按钮(self.\uu new\u window1,text='b.绿色和银色',fg='绿色'\
bg='brown4',变量=self.\uuuuurb\uvar1,值=2)
self.\u rb3=单选按钮(self.\u new\u window1,text='c.黄色和黑色',fg='gold'\
bg='brown4',变量=self.\uuuuRB\uVAR1,值=3)
self.\uuu rb4=单选按钮(self.\uu new\u window1,text='d.Blue and brown',fg='Blue'\
bg='brown4',变量=self.\uuuuurb\uvar1,值=4)
self.\uuu rb1.grid(行=1,列=0)
self.\uuu rb2.grid(行=2,列=0)
self.\uuu rb3.grid(行=3,列=0)
self.\uuu rb4.grid(行=4,列=0)
我希望在程序启动时取消选择所有按钮。

试试看

self.__rb1.deselect()
self.__rb2.deselect()
self.__rb3.deselect()
self.__rb4.deselect()

问题是,您不应该打开一个新的
Tk()
窗口,而应该创建一个新的
Toplevel()
窗口来解决问题

因此,不要使用
self.\uuu new\u window1=Tk()
而使用
self.\uuu new\u window1=Toplevel()

试试这个

def next1(自身):
self.\uuu new\u window1=Toplevel()
self.\u新建\u窗口1.配置(bg='brown4')
self.\u新建\u窗口1.标题(“问题1”)
#问题单选按钮
self.\uuuu rb\u var1=IntVar()
#创建第一个问题Radiobutton小部件
self.\uuu rb1=单选按钮(self.\uu new\u window1,text='a.Red and Gold',fg='Red',bg='brown4',variable=self.\uu rb\u var1,value=1)
self.\uuu rb2=单选按钮(self.\uu new\u window1,text='b.Green and Silver',fg='Green',bg='brown4',variable=self.\uu rb\u var1,value=2)
self.\uuu rb3=单选按钮(self.\uu new\u window1,text='c.Yellow and Black',fg='gold',bg='brown4',variable=self.\uu rb\u var1,value=3)
self.\uuu rb4=单选按钮(self.\uu new\u window1,text='d.Blue and brown',fg='Blue',bg='brown4',variable=self.\uu rb\u var1,value=4)
self.\uuu rb1.grid(行=1,列=0)
self.\uuu rb2.grid(行=2,列=0)
self.\uuu rb3.grid(行=3,列=0)
self.\uuu rb4.grid(行=4,列=0)