radiobutton的错误 - tkinter

时间:2016-08-09 06:17:04

标签: python tkinter

我使用Tkinter制作GUI。我有一个带2个radiobutton的窗口('是'和'否'),但是当我选择一个时,它不会运行脚本:

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()

如果我没有第一个窗口,它可以正常工作,但它没有。

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

2 个答案:

答案 0 :(得分:1)

  1. 您已启动多个Tk()系统,但应该只有一个。
  2. 如果您想要新窗口,请使用Toplevel()
  3. mainloop()除事件外没有执行任何代码。只有在关闭窗口后,代码才会在mainloop之后继续“流动”。
  4. 所以这是你的代码修复:

    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()
    

    仔细检查,我改变了小部件的父母和其他变化。

答案 1 :(得分:0)

可能是tkinter radiobutton not updating variable的重复,但看到这个问题首先被问到答案可能会更有意义。

确保将主人分配给IntVar,如if (value == "Groups") { $("#bottom").hide(); } else { $("#bottom").show(); }

$("#middle").change(function() {
    var middle = $(this).val();
    $("#bottom > option").hide();
    $("#bottom > option[value*='" + middle +"']").show();
});

尝试运行它,单击不同的按钮(它们是radiobuttons但是指示符= False),您将看到它正确打印更改的值!