Python 我的单选按钮在创建时被选中

Python 我的单选按钮在创建时被选中,python,tkinter,Python,Tkinter,我的问题是,当创建一个单选按钮时,它会被自动选中,我不能取消选中。我在x和y维度的框架内创建它。 我尝试了.deselect()函数,但它没有任何改变 (Python 3.6) 代码: 及照片: 单选按钮需要与一个特殊的Tkinter变量(StringVar等)相关联,并设计为两个或更多的组工作。如果不指定变量,将为您创建一个变量。Radiobutton的默认值是空字符串,它也是默认变量。Radiobutton需要与一个特殊Tkinter变量(StringVar等)关联,并设计为两个或多个一组工

我的问题是,当创建一个单选按钮时,它会被自动选中,我不能取消选中。我在x和y维度的框架内创建它。 我尝试了
.deselect()
函数,但它没有任何改变 (Python 3.6)

代码:

及照片:

单选按钮需要与一个特殊的Tkinter变量(
StringVar
等)相关联,并设计为两个或更多的组工作。如果不指定变量,将为您创建一个变量。Radiobutton的默认值是空字符串,它也是默认变量。Radiobutton需要与一个特殊Tkinter变量(
StringVar
等)关联,并设计为两个或多个一组工作。如果不指定变量,将为您创建一个变量。Radiobutton的默认值是空字符串,它也是默认变量。首先,如果我们只想修改代码,给我们一个单独的未选中单选按钮,这就可以了

from tkinter import Tk, IntVar, Radiobutton, mainloop, ttk

root = Tk()

frm = ttk.Frame(root)

frm.place(x = 0, y = 0, width = 1000, height = 1000)

v = IntVar()

Ek = ttk.Radiobutton(frm, text = "text", variable = v, value = 1)

Ek.place(x = 100, y = 100)

mainloop()
除了开始和结束时设置的样板文件外,我们在原始代码中唯一需要更改的就是将参数
variable=v,value=1
添加到Radiobutton调用中

这些额外的参数在孤立的情况下是没有意义的,因为同样的原因,通常只有一个单选按钮是没有意义的。一旦我们加上其中两个,我们就能更好地看到发生了什么

在@Stack posted()文档中,第一个代码示例如下所示:

from Tkinter import *

master = Tk()

v = IntVar()

Radiobutton(master, text="One", variable=v, value=1).pack(anchor=W)
Radiobutton(master, text="Two", variable=v, value=2).pack(anchor=W)

mainloop()
Radiobutton(master, text="One", variable=v).pack(anchor=W)
Radiobutton(master, text="Two", variable=v).pack(anchor=W)
如果我们运行它,默认情况下会得到两个未选中的单选按钮。如果随后将
value=1
部分更改为
value=0
,则第一个单选按钮显示为选中,如果将
value=2
更改为
value=0
,则第二个单选按钮显示为选中。所以
value=0
似乎给了我们默认选中的按钮,但我们还不知道为什么。让我们再做一点实验

如果我们尝试删除新样本中的片段,直到我们回到更接近您最初编写的内容,我们可以看到发生了什么。完全删除
参数并按如下方式运行:

from Tkinter import *

master = Tk()

v = IntVar()

Radiobutton(master, text="One", variable=v, value=1).pack(anchor=W)
Radiobutton(master, text="Two", variable=v, value=2).pack(anchor=W)

mainloop()
Radiobutton(master, text="One", variable=v).pack(anchor=W)
Radiobutton(master, text="Two", variable=v).pack(anchor=W)
默认情况下,这两个按钮均未选中,但随后会进一步删除
变量
参数,使代码看起来像原始调用:

Radiobutton(master, text="One").pack(anchor=W)
Radiobutton(master, text="Two").pack(anchor=W)
给我们两个默认都选中的按钮,这让我们回到原来的问题

基本上,我们在这里遇到了各种奇怪的情况,因为我们刚刚开始摆弄代码,忘记了单选按钮实际上代表什么

单选按钮的概念首先代表的是变量的值。不是整个变量,只是它可能等于的其中一个。这组单选按钮本身,加在一起,给了我们一个离散变量的视觉表示:一个可以处于N种状态中的1种状态的东西

因此,单选按钮的API自然会要求我们提供一些信息,比如“您希望我们使用哪个python变量来保存这些值?”(这大致就是
变量
关键字)和“您希望我们在幕后将哪些值粘到这些按钮上以区分不同的状态?”(这是
关键字)

正如预期的那样,代码在上述值为1和2的情况下工作得最好,因为在这种情况下,代码在概念上正确地反映了单选按钮的实际情况。当我们碰撞这些值或将它们设置为零或完全忽略它们时,事情会变得有点奇怪和不可预测,因为我们正在处理实现tkinter API的详细信息,而不是API要实现的单选按钮的简单概念


笔记本电脑快没用了,所以我要继续点击send。希望这不会太冗长。祝你好运。

首先,如果我们只是想修改你的代码,给我们一个单独的未经检查的单选按钮,这就可以了

from tkinter import Tk, IntVar, Radiobutton, mainloop, ttk

root = Tk()

frm = ttk.Frame(root)

frm.place(x = 0, y = 0, width = 1000, height = 1000)

v = IntVar()

Ek = ttk.Radiobutton(frm, text = "text", variable = v, value = 1)

Ek.place(x = 100, y = 100)

mainloop()
除了开始和结束时设置的样板文件外,我们在原始代码中唯一需要更改的就是将参数
variable=v,value=1
添加到Radiobutton调用中

这些额外的参数在孤立的情况下是没有意义的,因为同样的原因,通常只有一个单选按钮是没有意义的。一旦我们加上其中两个,我们就能更好地看到发生了什么

在@Stack posted()文档中,第一个代码示例如下所示:

from Tkinter import *

master = Tk()

v = IntVar()

Radiobutton(master, text="One", variable=v, value=1).pack(anchor=W)
Radiobutton(master, text="Two", variable=v, value=2).pack(anchor=W)

mainloop()
Radiobutton(master, text="One", variable=v).pack(anchor=W)
Radiobutton(master, text="Two", variable=v).pack(anchor=W)
如果我们运行它,默认情况下会得到两个未选中的单选按钮。如果随后将
value=1
部分更改为
value=0
,则第一个单选按钮显示为选中,如果将
value=2
更改为
value=0
,则第二个单选按钮显示为选中。所以
value=0
似乎给了我们默认选中的按钮,但我们还不知道为什么。让我们再做一点实验

如果我们尝试删除新样本中的片段,直到我们回到更接近您最初编写的内容,我们可以看到发生了什么。完全删除
参数并按如下方式运行:

from Tkinter import *

master = Tk()

v = IntVar()

Radiobutton(master, text="One", variable=v, value=1).pack(anchor=W)
Radiobutton(master, text="Two", variable=v, value=2).pack(anchor=W)

mainloop()
Radiobutton(master, text="One", variable=v).pack(anchor=W)
Radiobutton(master, text="Two", variable=v).pack(anchor=W)
默认情况下,这两个按钮均未选中,但随后会进一步删除
变量
参数,使代码看起来像原始调用:

Radiobutton(master, text="One").pack(anchor=W)
Radiobutton(master, text="Two").pack(anchor=W)
给我们两个默认都选中的按钮,这让我们回到原来的问题

基本上,我们在这里遇到了各种奇怪的情况,因为我们刚刚开始摆弄代码,忘记了单选按钮实际上代表什么

单选按钮的概念首先代表的是变量的值。不是整个变量,只是它可能等于的其中一个。这组单选按钮本身,加在一起,给了我们一个vi