首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何确保单选按钮处于选中状态

如何确保单选按钮处于选中状态
EN

Stack Overflow用户
提问于 2019-06-02 21:33:18
回答 1查看 50关注 0票数 0

我正在做一个实验,在这个实验中,我向参与者展示刺激,并在每次刺激后问他们问题。我有四个问题,每个问题都在一个单独的框架中。每个问题的答案是从七个单选按钮中选择一个。我在一个单独的框架中也有一个按钮,用于保存选择的值并显示下一个刺激。这里的问题是,如果参与者忘记选择其中一个单选按钮,该按钮的值将保存为0,我希望避免这种情况。我试图设置一个条件,仅当选择了所有单选按钮时才启用下一个刺激按钮,但我失败了。有没有办法做到这一点?

代码语言:javascript
复制
import Tkinter as tk
import PIL.Image 
import PIL.ImageTk
import tkMessageBox
from Tkinter import *

def present(tacton):
    qual_frame = tk.LabelFrame(group, padx=30, pady=30)
    qual_frame.grid(row=0, column=1)


    urgency_frame = tk.LabelFrame(qual_frame, text="How Urgent was the 
    stimulus?", padx=15, pady=30, font = "Verdana 14")
    urgency_frame.grid(row=1, column=0)
    urgency  = tk.IntVar()
    Radiobutton(master=urgency_frame, text="1 (Not at all)          ", 
    variable=urgency , value=1, font = "Verdana 12").grid(row=0, column=0)
    Radiobutton(master=urgency_frame, text="2                       ", 
    variable=urgency , value=2, font = "Verdana 12").grid(row=0, column=1)
    Radiobutton(master=urgency_frame, text="3                       ", 
    variable=urgency , value=3, font = "Verdana 12").grid(row=0, column=2)
    Radiobutton(master=urgency_frame, text="4 (Neutral)             ", 
    variable=urgency , value=4, font = "Verdana 12").grid(row=0, column=3)
    Radiobutton(master=urgency_frame, text="5                       ", 
    variable=urgency , value=5, font = "Verdana 12").grid(row=0, column=4)
    Radiobutton(master=urgency_frame, text="6                       ", 
    variable=urgency , value=6, font = "Verdana 12").grid(row=0, column=5)
    Radiobutton(master=urgency_frame, text="7 (Very much)", variable=urgency , 
    value=7, font = "Verdana 12").grid(row=0, column=6) 

    annoyance_frame = tk.LabelFrame(qual_frame, text="How Annoying was the 
    stimulus?", padx=15, pady=30, font = "Verdana 14")
    annoyance_frame.grid(row=5, column=0, sticky="nsew")
    annoyance = tk.IntVar()
    Radiobutton(master=annoyance_frame, text="1 (Not at all)          ", 
    variable=annoyance, value=1, font = "Verdana 12").grid(row=0, column=0)
    Radiobutton(master=annoyance_frame, text="2                       ", 
    variable=annoyance, value=2, font = "Verdana 12").grid(row=0, column=1)
    Radiobutton(master=annoyance_frame, text="3                       ", 
    variable=annoyance, value=3, font = "Verdana 12").grid(row=0, column=2)
    Radiobutton(master=annoyance_frame, text="4 (Neutral)             ", 
    variable=annoyance, value=4, font = "Verdana 12").grid(row=0, column=3)
    Radiobutton(master=annoyance_frame, text="5                       ", 
    variable=annoyance, value=5, font = "Verdana 12").grid(row=0, column=4)
    Radiobutton(master=annoyance_frame, text="6                       ", 
    variable=annoyance, value=6, font = "Verdana 12").grid(row=0, column=5)
    Radiobutton(master=annoyance_frame, text="7 (Very much)",  
    variable=annoyance, value=7, font = "Verdana 12").grid(row=0, column=6) 


    valence_frame = tk.LabelFrame(qual_frame, text = 'How Pleasant was the 
    stimulus?', padx = 15, pady = 30, font = "Verdana 14")
    valence_frame.grid(row=10, column=0, sticky="nsew")
    valence = tk.IntVar()
    Radiobutton(master=valence_frame, text="1 (Not at all)          ", 
    variable=valence, value=1, font = "Verdana 12").grid(row=0, column=0)
    Radiobutton(master=valence_frame, text="2                       ", 
    variable=valence, value=2, font = "Verdana 12").grid(row=0, column=1)
    Radiobutton(master=valence_frame, text="3                       ", 
    variable=valence, value=3, font = "Verdana 12").grid(row=0, column=2)
    Radiobutton(master=valence_frame, text="4 (Neutral)             ", 
    variable=valence, value=4, font = "Verdana 12").grid(row=0, column=3)
    Radiobutton(master=valence_frame, text="5                       ", 
    variable=valence, value=5, font = "Verdana 12").grid(row=0, column=4)
    Radiobutton(master=valence_frame, text="6                       ", 
    variable=valence, value=6, font = "Verdana 12").grid(row=0, column=5)
    Radiobutton(master=valence_frame, text="7 (Very much)",  variable=valence, 
    value=7, font = "Verdana 12").grid(row=0, column=6) 


    arousal_frame = tk.LabelFrame(qual_frame, text = 'How Exciting was the 
    stimulus?', padx = 15, pady = 30, font = "Verdana 14")
    arousal_frame.grid(row=15, column=0, sticky="nsew")
    arousal = tk.IntVar()
    Radiobutton(master=arousal_frame, text="1 (Not at all)          ", 
    variable=arousal, value=1, font = "Verdana 12").grid(row=0, column=0)
    Radiobutton(master=arousal_frame, text="2                       ", 
    variable=arousal, value=2, font = "Verdana 12").grid(row=0, column=1)
    Radiobutton(master=arousal_frame, text="3                       ", 
    variable=arousal, value=3, font = "Verdana 12").grid(row=0, column=2)
    Radiobutton(master=arousal_frame, text="4 (Neutral)             ", 
    variable=arousal, value=4, font = "Verdana 12").grid(row=0, column=3)
    Radiobutton(master=arousal_frame, text="5                       ", 
    variable=arousal, value=5, font = "Verdana 12").grid(row=0, column=4)
    Radiobutton(master=arousal_frame, text="6                       ", 
    variable=arousal, value=6, font = "Verdana 12").grid(row=0, column=5)
    Radiobutton(master=arousal_frame, text="7 (Very much)",  variable=arousal, 
    value=7, font = "Verdana 12").grid(row=0, column=6) 



    next_frame = tk.LabelFrame(group, padx=20, pady=20)
    next_frame.grid(row=6, column=1)

    Next_Stimulus = tk.Button(master=next_frame, text="Next Stimulus",  
    bg="green", padx=20, pady=20, width=20, font = "Verdana 12")
    Next_Stimulus.pack()



    root.mainloop()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-03 00:30:03

您可以让按钮始终处于活动状态,并在按下它时检查条件,只有在设置了所有变量时才进入下一个刺激:

代码语言:javascript
复制
if all([urgency.get(), annoyance.get()] ... etc):
    # go to next stimulus

或者,您可以在IntVars和enable按钮中跟踪更改,仅当全部设置完毕后才能跟踪更改。为每个IntVar设置一个跟踪:

代码语言:javascript
复制
urgency.trace('w', enable_button)

然后在回调函数中检查IntVar状态:

代码语言:javascript
复制
def enable_button(*args):
    if all([urgency.get(), annoyance.get()] ... etc):
        Next_Stimulus.config(state=tk.NORMAL)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56415523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档