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

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)
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
js循环获取所有单选框的值(input radio each)
$('input[name=choice2]').each(function(){//获取所有name=choice2的值rn console.log($(this).val());rn });rnrnrn
python-Tkinter单选框(五)
python-Tkinter单选框(五)一、单选框from tkinter import *nnroot = Tk()nnv = IntVar()nnRadiobutton(root,text='One',variable=v,value=1,).pack(anchor=W)nRadiobutton(root,text='Two',variable=v,value=2,).pack(anchor=...
tkinter实现单选框和复选框
一 代码rnnimport tkinterrnroot = tkinter.Tk()rnr = tkinter.StringVar()rnr.set('1')rnradio = tkinter.Radiobutton(root,rn variable = r,rn value ='1',rn
通过循环生成的单选框,如何获取每个选项的值?
使用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
小白学tkinter(单选Radiobutton组件)
#Radiobutton为单选按钮,即在同一组内只能有一个按钮被选中,每当选中组内的一个按钮时,其它的按钮自动改为非选中态,与其他控件不同的是:它有组的概念.
python tkinter单选框实现
通过python的tkinter模块实现单选框的功能,可以实现简单的选择。
获取单选框被选中的值
$('input:radio[name="newOrTeacher"]:checked').val()
Tkinter学习笔记之Radiobutton选择按钮
Radiobutton:单选按钮,用于多选一,可以包含文字或者图像,在同一个组内,只能有一个按钮被选中。每一个Radiobutton都可以有自己的处理函数,可以使用command选项为每个选择按钮来制定一个回调函数,一经触发,函数会做出相应处理。这里将做一个简单的Radiobutton的应用,主要实现选择不同的Radiobutton时,对应的处理函数做出不用的反应,实时将选择的选项显示在标签中。
vue radio单选框,获取当前项(每一项)的value值
1.给需要获取value值的单选框设置同一个点击事件,传入event当前事件对象n&amp;amp;amp;lt;template&amp;amp;amp;gt;n &amp;amp;amp;lt;div&amp;amp;amp;gt;n &amp;amp;amp;lt;label&amp;amp;amp;gt;&amp;amp;amp;lt;input @click=&amp;amp;quot;getRadioVal&amp;amp;quot; type=&amp;amp;quot;r
jquery 遍历所有单选按钮,得到选中的按钮值
遍历单选框n n n #result{n width: 200px;n }n n n $(document).ready(function(){n $("#season").click(function(){n var season = "";n
关于单选框传值到input内小结(循环可用)
_id"n id="build_id" type="radio" value="{{$vo.build_id}}" class="xcv" onclick="**show_val(this)**"n >n nnscriptnntype="text/javascript">nnfunctionn**show_val**($item){nn//document.getEleme
Tkinter中复选菜单是否被选中的判断与设置
本文讲述的是在Python的Tkinter中如何判断复选菜单是否被选中,和如何在不用鼠标点击复选菜单的情况下改变被选中状态。
获取单选框复选框被选中的值
非常简单自己运行一下效果即见&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;n&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;nn &amp;lt;he...
js获取单选框的值
获取单选框的值有三种方式:1、$('input:radio:checked').val();2、$("input[type='radio']:checked").val();3、$("input[name='rd']:checked").val();rn借鉴 https://zhidao.baidu.com/question/348226665.html
解决element-ui循环创建单选框组件,点击只选中一次
此时获取到的radioCheck为一个json数组
jquery中遍历选中的单选框,获取单选框中选中的某些值
var orgCodeArr = [];nn$('#tb_orgNameList input[type=checkbox]:checked').each(function (i) {n    orgCodeArr.push($(this).parents('tr').find('.orgCodeStr').val())n})
easyUI输入框、下拉框、单选框等取值方式
easyUI输入框、下拉框、单选框等取值方式nn1、input:nnn &amp;lt;input type=&quot;text&quot; name=&quot;APPLYDEPTNAME&quot; id=&quot;APPLYDEPTNAME&quot; style=&quot;width: 99%&quot;n maxlength=&quot;50&quot; class=&quot;easyui-validatebox&quot; data-opti
JS如何获取和改变 单选按钮radio选中的值
1、html:<label style="font-size: 14px"><input id="input1"style="width:25px;height:13px;" type="radio" name="radio" value="否" checked/>否</label>n<label onclick="fun();" style="font-size: 14px"><input id=
python-Tkinter复选框(四)
python-Tkinter复选框(四)from tkinter import *n'''n复选框:Checkbutton()n'''nroot = Tk()nlist1 = ['李白','杜甫','李清照','唐伯虎','王昭君','西施']nv=[]nnfor tem in list1:n v.append(IntVar())n b = Checkbutton(root,text=...
angularJS中ng-ng-repeat里的单选框(radio)和多选框(checkbox)赋值取值
angularJS中ng-ng-repeat里的单选框(radio)和多选框(checkbox)赋值取值nHLML代码  多选n n n n js代码   全选和取消n $scope.cancelAllT = function () {n angular.forEach
获取radio(单选框)值
利用率n总量 n 车数nvar radioType=$('input:radio[name="view_type"]:checked').val();
JS ajax获取值使单选框选中
$(".radio label").each(function () {n if($(this).find("input").val()==info.version){n $(this).find("input").attr("checked",true);n }n});nnnnnajax 为数组赋值nnnvar info = data.data;nvar
Bootstrap 框架 form:radiobuttons 单选标签可以添加Element 属性来产生单选之间的距离(防老年痴呆)
&lt;form:radiobuttons nelement="label &lt;span style = \"margin-right:40px;\"&gt;&lt;/span" npath="tax" nitems="${fns:getDictList('sex')}" nitemLabel="label" nitemValue="value" nhtmlEscape="false" nc...
vue循环出来的radio单选框,用函数给单选框赋默认值,出现单选框点击无响应的情况
项目中,从后台拿数据,根据数据来渲染dom,渲染出的radio单选框要赋默认值,然后在methods中写了个赋值函数,最后出现点击单选框无响应的现象。浪费了好多时间,原来是我方法错误。正确的方法不能直接给单选框的选择值赋值,而是要使用Vue.set()方法。如下...
Android获取单选与复选框的值
一、LinearLayout 视图页面<?xml version="1.0" encoding="utf-8"?>n<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"n android:id="@+id/activity_app10"n android:layout_width="match_p
JS获取单选框选中的值
var secondaryCampus = $('input:radio[name="secondaryCampus"]:checked').val();
web单选按钮传值问题
单选按钮代码:nn nnn&amp;lt;input type=&quot;hidden&quot; name=&quot;quest1&quot; id=&quot;quest1&quot; value=&quot;&quot;&amp;gt;n&amp;lt;input name=&quot;Fruit&quot; type=&quot;radio&quot; value=&quot;1&quot; /&amp;gt;苹果n&amp;lt;input name=&quot;Fruit&quot; typ
django学习笔记---文件上传,用户认证,单选框,复选框接受
url.pyurlpatterns = [n url(r'^admin/', admin.site.urls),n url('login/',views.login), n]nview.pydef login(request):n # &quot;&quot;&quot;n #麻烦的方法n # f = open('templates/login.html', 'r', encoding='utf-...
给单选按钮选择默认值以及获取单选按钮选择值
给单选按钮默认值,Book_mettingRooms是后台设置的默认值var a = '${Book_mettingRooms}';nvar Book_mettingRooms = document.getElementsByName("Book_mettingRoomsStep");、nnfor ( var i = 0; i < Book_mettingRooms.length; i++) {n
表单提交中的radio、select下拉框和checkbox复选框数据的获取
radio: &amp;lt;tr&amp;gt;n &amp;lt;td&amp;gt;公司性质&amp;lt;/td&amp;gt;n &amp;lt;td&amp;gt;n &amp;lt;input type=&quot;radio&quot; id=&quot;pro&quot; name=&quot;pro&quot; value=&quot;1&quot;&amp;gt;国有企业n &amp;lt;input type=&quot;radio&quot; id=&a
js获取input = radio 单选框选择中的值
调用:n var amount = getRadioButtonChecked("radio");n console.log("amount=="+amount);/**n * 获取input = radio 单选框中选中的值n * @param tagNameAttr string radio组中input的name属性值n * return 返回被选中radio的值n */nfunction
多个单选框的值传到后台
使用C标签的foreach循环将从后台拿到的值遍历到前台,单选框的name值不能相等就用对象的ID代替,设置一个隐藏域,在JS中将选中单选框的Value值拼接成json字符串,以form表单的形式提交到action层,action层中getParameter()方法通过隐藏域的name拿到value值。在service层将json字符串转为对象。传到数据库中。 njsp代码:<%@ page lan
js获取单选框里面的值
 nnn&amp;lt;script&amp;gt;nwindow.onload = function(){n//通过名字获取 getElementsByNamen//var obj = document.getElementsByName(&quot;fruit&quot;);n//通过标签获取 getElementsByTagNamenvar obj = document.getElementsByTagName(&quot;inpu...
radio单选框的选中与取消
n n n 需求:n单选框可重复点击选中和取消;n背景:n单选框只可以选中,取消需要点击其他单选框。n解决方案:n&amp;lt;!DOCTYPE HTML&amp;gt;n&amp;lt;html&amp;gt;n&amp;lt;head&amp;gt;n &amp;lt;title&amp;gt;单选按钮取消选中&amp;lt;/title&amp;gt;n &amp;lt;script type=&quot;text/javascript&quot; sr..
获取单选框选中行的值
n //从弹窗页面的表中获取到单选按钮行的每个数据n var tr = $('input[name=&quot;ck&quot;]:checked').parents(&quot;tr&quot;);nn本质就是获取到被选行的tr,找到tr后就可以做很多事了,比如取value,去元素等等。...
C# Google 翻译TKK计算tk 百度翻译gtk计算sign 通用算法
原JS代码rnfunction b(a, b) {rn for (var d = 0; d &amp;amp;amp;amp;amp;lt; b.length - 2; d += 3) {rn var c = b.charAt(d + 2),rn c = &amp;amp;amp;amp;quot;a&amp;amp;amp;amp;quot; &amp;amp;amp;amp;amp;lt;= c ? c.charCodeAt(0) - 87 :
Ajax中根据json数据不同,对页面上的单选框Radio进行回显
Ajax中根据json数据不同,对页面上的单选框Radio进行回显rnrnrnjs代码:rnrn$(document).ready(function(){n $.ajax({n type: "POST",n url: path+"/pop/nowTodayMeet2",n dataType: "json",n success: function(data){n
单选框的取值与赋值
取值:var status = $('input[type=&quot;radio&quot;]:checked').val();赋值: var statu = &quot;${status}&quot;;n if(statu=='启用'){n $(&quot;input[name='status'][value=0]&quot;).attr(&quot;checked&quot;,true); n }n if(statu=='禁用'){n $(&quot;input[...
关于修改时,如何确定,单选框,下拉列别框,原先选择的值
有时候,我们队下拉列表框,单选框,进行提交时,一般是把字符串类型转化为整数在提交,那么当进行修改的时候,如何确定原先所选择的值rn下面进行有关讲解rn首先我们在res目录下value下的string中新建一个  作为下拉展示数据包rnrnname="spinner">n 请选择n 北京n 上海n 广州n 深圳nrnrnrnrnrnrnrn Array
jquery单选按钮循环赋值及获取选中的值
$.each(data,function(name,value){n$(":radio[name='"+name+"'][value='"n + value + "']").prop("checked",n"checked");nn})
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 python循环教程 通过源代码学习python