Python 当程序在变量为StringVar时启动时,未选中单选按钮

Python 当程序在变量为StringVar时启动时,未选中单选按钮,python,python-3.x,tkinter,radio-button,tk,Python,Python 3.x,Tkinter,Radio Button,Tk,在这里,当程序启动时,我会检查所有的单选按钮。但是,我不希望首先检查任何一个,只有用户可以选择其中一个: from tkinter import * root = Tk() var = StringVar() l = Label(root) l.pack() def f(): l.config(text=var.get()) rb1 = Radiobutton(root, text="First", variable=var, value='a', command=f) rb1.

在这里,当程序启动时,我会检查所有的单选按钮。但是,我不希望首先检查任何一个,只有用户可以选择其中一个:

from tkinter import *
root = Tk()

var = StringVar()

l = Label(root)
l.pack()

def f():
    l.config(text=var.get())

rb1 = Radiobutton(root, text="First", variable=var, value='a', command=f)
rb1.pack()

rb2 = Radiobutton(root, text="Second", variable=var, value='b', command=f)
rb2.pack()
但与IntVar不同:

from tkinter import *
root = Tk()

var = IntVar()

l = Label(root)
l.pack()

def f():
    l.config(text=var.get())

rb1 = Radiobutton(root, text="First", variable=var, value=1, command=f)
rb1.pack()

rb2 = Radiobutton(root, text="Second", variable=var, value=2, command=f)
rb2.pack()
当我运行这个程序时,它按照我想要的方式工作——当程序启动时,没有一个单选按钮被选中,我决定选择其中一个


但是当变量为StringVar时,它就不起作用了。我想知道为什么没有。我在一些资料中寻找过任何解决方案,但我找不到任何有用的。所以决定在这里提问。任何帮助都将不胜感激

您应该能够将您的单选按钮设置为“”==“empty var”,这样就不会选择任何一个,但正如@bryan Oakley所提到的,这没有任何意义

Im不是usre我在最佳实践范围内通过向列表中添加值来创建单选按钮,但这应该允许您拥有未选中的单选按钮

from tkinter import *
root = Tk()

def f():
    l.config(text=var.get())

var = StringVar()
var.set(' ')  #EVEN without the None value, this will allow empty radiobuttons on init. NOT Recommended

values = ['None', 'a', 'b']

l = Label(root, width=20)
l.pack()

for vset in values:
    rb = Radiobutton(root, text="First", variable=var, value=vset, command=f)
    rb.pack()

root.mainloop()

您应该能够将您的单选按钮设置为“”==“empty var”,这样就不会选择任何一个,但正如@bryan Oakley所提到的,这没有任何意义

Im不是usre我在最佳实践范围内通过向列表中添加值来创建单选按钮,但这应该允许您拥有未选中的单选按钮

from tkinter import *
root = Tk()

def f():
    l.config(text=var.get())

var = StringVar()
var.set(' ')  #EVEN without the None value, this will allow empty radiobuttons on init. NOT Recommended

values = ['None', 'a', 'b']

l = Label(root, width=20)
l.pack()

for vset in values:
    rb = Radiobutton(root, text="First", variable=var, value=vset, command=f)
    rb.pack()

root.mainloop()

从可用性的角度来看,这是一个糟糕的设计,而不是单选按钮的工作原理。单选按钮应该正好代表许多选择中的一个。不是零或一,正是一。如果你想让它们全部取消选中,请再添加一个单选按钮,选择“无”或“未决定”,或者在你的应用程序上下文中有意义的任何东西。我知道它的设计很糟糕,但这只是一个小例子。我被另一个程序卡住了,但时间更长,所以我决定找出确切的问题并在这里提问,而不是在这里编写“复杂”的程序。啊,我知道这不是一个大问题,我只是觉得卡住了!你能编辑我的代码吗?我试过了,但没有任何改变。从可用性的角度来看,这是一个糟糕的设计,而不是单选按钮的工作原理。单选按钮应该正好代表许多选择中的一个。不是零或一,正是一。如果你想让它们全部取消选中,请再添加一个单选按钮,选择“无”或“未决定”,或者在你的应用程序上下文中有意义的任何东西。我知道它的设计很糟糕,但这只是一个小例子。我被另一个程序卡住了,但时间更长,所以我决定找出确切的问题并在这里提问,而不是在这里编写“复杂”的程序。啊,我知道这不是一个大问题,我只是觉得卡住了!你能编辑我的代码吗?我试过了,但没有改变。谢谢你,@glls!变量集(“”)就是我要找的!:)谢谢!谢谢你,@glls!变量集(“”)就是我要找的!:)谢谢!