python TK 通过循环生成的单选框,如何获取每个选项的值

因为要输出多道题目所以我才用循环添加Radiobutton
但发现这样其中的command后接的函数中var.get()没有值了
没办法获取选择的值
请问这怎么解决 后面还要判断对错计算成绩
大致问题如下

import tkinter as tk

window = tk.Tk()  # 实例化一个窗口
window.title('my window')  # 定义窗口标题
window.geometry('400x600')  # 定义窗口大小
l = tk.Label(window, bg='yellow', width=20, height=2, text='empty')
l.pack()

def print_selection():
    l.config(text='you have selected' + var.get())  # 让对象l显示括号里的内容
    print(var.get())

for j in range(10):
    var = tk.StringVar()
    for text, value in [('option A', 'A'), ('option B', 'B'),('option C', 'C')]:
        r1 = tk.Radiobutton(window, text=text, variable=var, value=value, command=print_selection)
        r1.pack()  # 将参数A传入var
window.mainloop()

1个回答

你这个问题我也没完全找到解决办法,但可以通过如下方法解决:
1、首先是事件绑定不能放在按钮定义时绑定,因为这样绑定无法取得点击的组件信息,而是应以单独的bind语句来绑定;
2、直接通过按钮定义来获取文本存在问题,而应该通过选择的组件来获取选择的文本;
3、通过字典可以记录选择文本与选择组件之间的对应关系。
为了说明问题,我去掉了一个for j in range(10)循环,来说明相关实现,代码如下:

```import tkinter as tk

window = tk.Tk() # 实例化一个窗口
window.title('my window') # 定义窗口标题
window.geometry('400x600') # 定义窗口大小
l = tk.Label(window, bg='yellow', width=20, height=2, text='empty')
l.pack()

def print_selection(event=None):
choice=event.widget['text'] #event为鼠标事件捕获的信息对象,包括选择组件的信息,获得组件上面的文字,其实还可以直接获得组件的ID等
l.config(text='you have selected' + choice) # 让对象l显示括号里的内容
print('choice=',choice,'var[choice]=',var[choice],'btn[choice]=',btn[choice]) #var[choice]没有捕获到数据

var={} #这个确认没有办法捕获选择内容,其实可以不要
btn={} #记录选择文字和按钮的对应关系字典

for text, value in [('option A', 'A'), ('option B', 'B'),('option C', 'C')]:
var[text]=tk.StringVar() #试图捕获选择内容的变量字典,经验证确认没有用
r1 = tk.Radiobutton(window, text=text, variable= var[text], value=value)# 将参数A传入var[text]
r1.pack()

r1.bind('', print_selection) #绑定鼠标左键单击事件
btn[text]=r1 #记录选择文字与组件的对应关系
window.mainloop()

执行截图如下:
![图片说明](https://img-ask.csdn.net/upload/201906/04/1559613946_560271.jpg)
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
通过循环生成的单选框,如何获取每个选项的值?
使用AJAX做的一个在线答题系统,获取XML中的问题和选项。rn由于题目数量和选项数量不固定,只能通过循环来输出单选框。rn请问如何对每组单选框的选项进行捕捉?rn另外,我要用PHP程序对其进行答案的判断。rnrnparseXML.html:rnrn rn Parse XMLrn rn rn rn Loading...rn rnrnrnrnparseXML.js:rnvar xmlHttp = false;rnrnfunction createXMLHttpRequest() rn if (window.ActiveXObject) rn xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");rn rn else if (window.XMLHttpRequest) rn xmlHttp = new XMLHttpRequest();rn rnrnrnfunction startRequest() rn createXMLHttpRequest();rn xmlHttp.open("get", "question.xml", true);rn xmlHttp.onreadystatechange = handleStateChange;rn xmlHttp.send(null);rnrnrnfunction handleStateChange() rn if (xmlHttp.readyState == 4) rn parseXML();rn rnrnrnfunction parseXML() rn var xmldoc = xmlHttp.responseXML;rn var questions = xmldoc.getElementsByTagName('Questions');rn var question = xmldoc.getElementsByTagName('Question');rn var qbody = xmldoc.getElementsByTagName('body');rn var i;rn var j;rn var output = "";rn for (i = 0; i < qbody.length; i++) rn output += qbody[i].firstChild.nodeValue + " ";rn for (j = 1; j < question[i].childNodes.length; j++) rn output += "";rn output += question[i].childNodes[j].firstChild.nodeValue + " ";rn rn output += " ";rn rn document.getElementById("display").innerHTML = output;rnrnrnrnquestion.xml:rnrnrn rn 题目1rn A选项rn B选项rn C选项rn D选项rn rn rn 题目2rn A 选项rn B 选项rn rn
mui 通过js获取单选框的值
&amp;lt;html&amp;gt; &amp;lt;head&amp;gt; &amp;lt;script type =&quot;text/javascript&quot;&amp;gt; function change() { varNew=document.getElementsByName(&quot;form1&quot;); varstrNew; for(vari=0;i&amp;lt;New.length;i++) { if(...
asp 获取单选框的值
我有两个单选框,我选中其中一个,现在我想要把选中的值提交到数据库中,要怎么写啊,请各位大虾帮帮忙
JSP+Java 获取单选框的值
JSP片段: &amp;lt;tr&amp;gt; &amp;lt;td style=&quot;width:75px;text-align: right;padding-top: 13px;&quot;&amp;gt;图片类型:&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; &amp;lt;input name=&quot;picType2&quot; type=&quot;radio&quot
获取单选框的value值!
怎么获取单选框的value值?要求:不要有表单,不要有带参数的方法。
获取复选框、单选框的值
单选框的值 <div class="ques_one"> <p>1. 一个月健身几次最好?(单选)</p> <ul> <li> <label> <input type="radio" name="question1" value="A" /> <span>A 一月八次</span>
js获取单选框的值
获取单选框的值有三种方式:1、$('input:radio:checked').val();2、$("input[type='radio']:checked").val();3、$("input[name='rd']:checked").val(); 借鉴 https://zhidao.baidu.com/question/348226665.html
JQuery 获取单选框的值
[code=&quot;html&quot;] 名称 编号 [/code] 取值代码: [code=&quot;javascript&quot;] var findby = $('input:radio[name=&quot;findradgroup&quot;]:checked').val(); [/code]
获取radio(单选框)值
利用率 总量 车数 var radioType=$('input:radio[name="view_type"]:checked').val();
获取单选框中的值
//取值 $("input[name='hot']:checked").val(); <input type="radio" name="hot" value="1" checked="checked" />是<input type="radio" name="hot" value="0" />不是$('input:radio:checked').val(); $("input[type='radi
关于获取单选框值
<%for(int ii=0,jj=0;ii<20,jj<20;ii++,jj++)rnrn data[ii] = data[ii]+1;rn String sql = "select Q_content,A,B,C,D,answer from question_info where Q_id = '"+data[ii]+"' ";rn sqlRst = online_exam.select(sql);rn sqlRst.next(); rn <%=sqlRst.getString("Q_content")%> rn type="radio" value="A"/>A:<%=sqlRst.getString("A")%> rn type="radio" value="B"/>B:<%=sqlRst.getString("B")%> rn type="radio" value="C"/>C:<%=sqlRst.getString("C")%> rn type="radio" value="D"/>D:<%=sqlRst.getString("D")%> rn <% rn rn %>rn单选框的用变量jj控制,如何获取单选框的值?
strust2 标签如何获取单选框的值?
如题: 展示页面 显示 男 或者 女 。 如何在修改页面利用 获取 展示页面显示的 男 或者 女 的值 ? 现在的问题是无论 展示页面显示的男或者女。 修改页面都显示的是男 /
如何循环获取radiobutton的值
[img=http://img.my.csdn.net/uploads/201204/22/1335070895_1872.jpg][/img]rnrn[code=C#]rnrn rn rn rn rn <%#Container.ItemIndex+1 %>rn 、rn rn rn rn rn A、 rn B、 rn C、 rn D、 rn rn rn rn rn rnrn[/code]
如何获取循环select的值
页面rnhttp://www.akscambodia.com/hotels.asp?id=41&lm=110rnrn他是循环出来的,请问如何获取值???rnrn图示:rn[img=http://hi.csdn.net/attachment/201105/24/173768_1306227089ZVYc.jpg][/img]
如何循环读取listbox的所有选项的值?
-
单选框的实现和获取对应的值
单选框的实现和获取对应的值 1. 单选框的实现 这里主要是利用了input标签里面的一个属性radio,这里的Radio 对象代表 HTML 表单中的单选按钮。 在 HTML 表单中 &lt;input type="radio"&gt; 每出现一次,一个 Radio 对象就会被创建。 单选按钮是表示一组互斥选项按钮中的一个。当一个按钮被选中,之前选中的按钮就变为非选中的。 在这里可以利用相...
jQuery获取单选框和多选框的值
jQuery获取单选框的值:var val=$('input:radio[name="sex"]:checked').val();jQuery获取多选框的值:var str=""; $("[name='checkbox'][checked]").each(function(){ str+=$(this).val()+"/r/n"; //alert($(this).val(
获取单选框被选中的值
$('input:radio[name="newOrTeacher"]:checked').val()
PHP 输入框获取单选框的值
NULL 博文链接:https://onestopweb.iteye.com/blog/2325653
jQuery获取单选框和多选框的值
[size=medium]单选框: 25岁以下 25~35岁 35~50岁 50岁以上 获值 var question1 = $('input:radio[name=&quot;radio&quot;]:checked').val(); alter(question1); 复选框: 私募股权(PE) 基金 信托 其他 ...
request获取网页单选框的值
[code=HTML] rn rn rn 用户名:rn rn rn rn 密码:rn rn rn rn 学生 老师rn rn rn rn rnrnrn[/code]rn用request获取status的值从是什么啊,假设选择第一项rn[code=Java]request.getParameter("status")[/code]
获取单选框的值并判断
$("input[name='xuan']:checked").val()==null
JS获取单选框选中的值
var secondaryCampus = $('input:radio[name="secondaryCampus"]:checked').val();
javascript获取单选框radio的值
直接看代码吧, 不解释了。 [code=&quot;javascript&quot;] function getRadioValue(radioName){ var obj = document.getElementsByName(radioName); if(obj!=null){ var i = 0; for(i=0;i...
如何所选单选框的值~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
下面这段哪错了,总是提示undefinedrn----------------------------------rnrn rn rn 1 rn rn 2 rn rn 3 rn rn rn
javascript中通过循环获取div的值??
有多个div,想要获取当前的div的id值。怎么办呢?????rn有多个div,想要获取当前的div的id值。怎么办呢?????rn谢谢各位!!!!rn[code=rn//有多个div,想要获取当前的div的id值。怎么办呢?????rnfor(var i=1;i <=10; i++) rnrnvar option = "option"+i;rnrntemp = temp+"" rn +""rn +" " rn rnoCell.innerHTML=" "rn +temprn +"";rnrnrnfunction add(option)rn//获取当前div的值rnvar board = document.getElementById(option);rnrnrn]rnrnrnrn[/code]
如何拿到单选框的值?
男:rn女:rnrn如何拿到单选框的值。
js循环获取所有单选框的值(input radio each)
$('input[name=choice2]').each(function(){//获取所有name=choice2的值 console.log($(this).val()); });
[=============]循环 获取 控件的值
form 上 有 20个 textbox 控件 名字 从 txt1 到 txt20rnrn我这样写 想获取他们的值 并判断 rnrn结果提示 未将对象引用设置到对象的实例rnrn[code=C#] for (int i = 0; i < 24; i++)rn rn if (((TextBox)(this.Controls["txtLimit" + (i + 1).ToString()])).Text.Trim() == "")rn [/code]rnrnrn该如何写呢?
后台代码如何获取表单的选项值
[code=c]省份rn地级市rn市、县级市、县[/code]
如何获取下拉框所选项的值?
拜托!
如何获取单选项传过来的值
jquery的代码 $(function()rn // alert("world!");rn $("#control").click(function()rn rn alert("hello2");rn $.get("set.php",rn radio: $("input[name='radio'][checked]").val()rn ,function(data,textStatus)rnrn );rn );rn )rnrn set.php页面的代码 rnrnrnrnrn rn 无标题文档rn rn rnrn rnrn rn rnrnrn rn选择:rn 关rn 开rn rnrnrnrnrnrn注:主要是通过ajax获取单选框的值 ,从而现实对数据路的操作。
如何获取 collection中某一选项的值
大家好,现有如下代码:rnrn rnrnrn而我要取出这个下拉列表中的某一项的值,如何实现呢?谢谢
如何获取forEach里的每个值
rn rn $chatRecord.serverName rn rn rn 查看聊天记录rn rn rn $chatRecord.chatCreateTime rn rn rnrnrnrn rn rn rn $chatRecord.chatContent rn rn rn rnrnrnrnrnrn这样只能获得第一条记录 无法对应 如果把第一个forEach 写到下面来 那只能显示一条记录了
如何通过亮度值获取GRB值
通过采样获得的一个点(例如彩色电视机某个点)的亮度值0x015E,怎样得到SetPixel函数中所需的RGB值呢?
python 通过js生成加密算法值
python 通过os.popen("node byted-acrawler.js %s" % self.userId)。调用生成_signature
怎么循环获取一个实体类每个字段的Display属性的值?
如图所示:rn[img=https://img-bbs.csdn.net/upload/201309/06/1378403230_969658.png][/img]rnrn图中是我某个类的字段,我设置了某个字段的属性[Display(Name = "区域编码")],怎么获取该实体类下每个字段的Display属性?当然有些字段我没设置Display属性(比如ID)
TextBox获取DropDownList的选项值......
问题:rn一个TextBox,一个DropDownListrnDropDownList的里面有一个选项值为:rna/b/crnrnrn现在TextBox通过JS获取DropDownList的值rn document.getElementById("TextBox的ID").innerText=document.form1.DropDownList的ID.value;rn[color=#FF0000]但这个获取的是整个值:a/b/c,我现在想获取的是a这个值???[/color]rnrnrnrnrn
checkbox 获取每一个选项的值
rnrnrn A、百度 rn rn B、google rn rn C、新浪 rn rn D、搜狐 rn rn E、csdn rnrnrnrn----------------------------------------------------------------------rnrnbbb.jsprnrn <%rn rn String s = "";rn String[] ss = request.getParameterValues(Integer.toString(22));rn for(String temp:ss) s += temp;rn String ti=s; rn out.println(ti);rn rn %>rnrn请问 我如何写 才能显示成这样: 0,1,0,0,1rn现在只能显示被选中的
如何保留单选框中的值
请问 比如是查询页面我在这个页面在单选框中选中一项,点查询后跳转到这个页面 如何把我选中的值保存在原来的select中,rn即保存查询条件不丢失
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池