Python Tkinter:所有单选按钮都已选中
这是我第一次使用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
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)