Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带有radiobutton的Bug-tkinter_Python_Tkinter - Fatal编程技术网

Python 带有radiobutton的Bug-tkinter

Python 带有radiobutton的Bug-tkinter,python,tkinter,Python,Tkinter,我使用Tkinter制作GUI。我有一个带有两个单选按钮(“是”和“否”)的窗口,但当我选择一个时,它不会运行脚本: root = Tk() Button(root, text='TEST', command=root.quit).pack() root.mainloop() master = Tk() v = IntVar() Radiobutton(master, text='Yes', variable=v, value=0).pack() Radiobutton(master,

我使用Tkinter制作GUI。我有一个带有两个单选按钮(“是”和“否”)的窗口,但当我选择一个时,它不会运行脚本:

root = Tk()

Button(root, text='TEST', command=root.quit).pack()

root.mainloop()

master = Tk()
v = IntVar()

Radiobutton(master, text='Yes', variable=v, value=0).pack()
Radiobutton(master, text='No', variable=v, value=1).pack()
Button(master, text='Exit', command=master.quit).pack()

master.mainloop()

print(v.get())

if v.get() == 0:
    testy = Tk()
    Label(testy, text='Bad').pack()
    testy.mainloop()

else:
    testn = Tk()
    Label(testn, text='Bad').pack()
    testn.mainloop()
如果我没有第一个窗口,它可以工作,但是有了它,它就不工作了

有人知道如何解决这个问题吗

  • 您已经启动了几个
    Tk()
    系统,但应该只有一个
  • 如果要获得新窗口,请使用
    Toplevel()
  • 除了事件之外,在
    mainloop()
    之后不会执行任何代码。只有在关闭窗口后,代码才会在
    mainloop
    之后继续“流动” 下面是您的修复代码:

    from tkinter import *
    
    root = Tk()
    
    Button(root, text='TEST', command=root.quit).pack()
    
    master = Toplevel()
    v = IntVar()
    
    def check_radio():
        print(v.get())
    
        if v.get() == 0:
            Label(Toplevel(), text='Bad').pack()
        else:
            Label(Toplevel(), text='Good').pack()
    
    
    Radiobutton(master, text='Yes', variable=v, value=0, command=check_radio).pack()
    Radiobutton(master, text='No', variable=v, value=1, command=check_radio).pack()
    Button(master, text='Exit', command=master.quit).pack()
    
    root.mainloop()
    
    仔细检查,我更改了小部件的父项和其他更改

  • 您已经启动了几个
    Tk()
    系统,但应该只有一个
  • 如果要获得新窗口,请使用
    Toplevel()
  • 除了事件之外,在
    mainloop()
    之后不会执行任何代码。只有在关闭窗口后,代码才会在
    mainloop
    之后继续“流动” 下面是您的修复代码:

    from tkinter import *
    
    root = Tk()
    
    Button(root, text='TEST', command=root.quit).pack()
    
    master = Toplevel()
    v = IntVar()
    
    def check_radio():
        print(v.get())
    
        if v.get() == 0:
            Label(Toplevel(), text='Bad').pack()
        else:
            Label(Toplevel(), text='Good').pack()
    
    
    Radiobutton(master, text='Yes', variable=v, value=0, command=check_radio).pack()
    Radiobutton(master, text='No', variable=v, value=1, command=check_radio).pack()
    Button(master, text='Exit', command=master.quit).pack()
    
    root.mainloop()
    
    仔细检查,我更改了小部件的父项和其他更改

    可能是重复的,但鉴于这个问题是首先提出的,因此答案在这里可能更有意义


    确保您正在为IntVar分配一个主节点,如
    self.rbv=tk.IntVar(主节点)#或“root”或您正在使用的任何对象)

    将Tkinter作为tk导入
    导入ttk
    类My_GUI:
    定义初始(自我,主):
    self.master=master
    硕士头衔(“测试无线电”)
    self.rbv=tk.IntVar(master)#的可能重复,但鉴于这个问题是首先提出的,这里的答案可能更有意义


    确保您正在为IntVar分配一个主节点,如
    self.rbv=tk.IntVar(主节点)#或“root”或您正在使用的任何对象)

    将Tkinter作为tk导入
    导入ttk
    类My_GUI:
    定义初始(自我,主):
    self.master=master
    硕士头衔(“测试无线电”)
    
    self.rbv=tk.IntVar(master)#好的,谢谢,如果我想取回radiobutton的信息,我需要怎么做?正如你在代码中看到的,我在radiobutton的创建中添加了另一个参数:command=check_radio,它在按下radiobutton时调用check_radio谢谢,如果我想取回radiobutton的信息,我需要怎么做?正如您在代码中看到的,我在radiobutton的创建中添加了另一个参数:command=check\u radio,它在按下radiobutton时调用check\u radio