gpt4 book ai didi

python - 如何从 tkinter 中的单选按钮获取值?

转载 作者:行者123 更新时间:2023-12-01 05:29:20 24 4
gpt4 key购买 nike

我正在 Tkinter 中创建多项选择测验,并使用单选按钮和复选按钮。对于这个问题,我使用单选按钮。如何从单选按钮获取值,以便在 if 语句“计算分数”中比较它们?计算机返回:“calculate_score_1() 仅接受 1 个参数(给定 0 个)”

另外,如何在类之间传递变量?我有十个问题的十个类,但希望所有的类都能够在用户得到正确答案时在分数上加 1 时访问变量“分数”。

class Question_1_Window(tk.Toplevel):
'''A simple instruction window'''
def __init__(self, parent):
tk.Toplevel.__init__(self, parent)
self.text = tk.Label(self, width=75, height=4, text = "1) Do you have the time to do at least twenty minutes of prefect duty each week?")
self.text.pack(side="top", fill="both", expand=True)

question_1_Var = IntVar() #creating a variable to be assigned to the radiobutton

Yes_1 = Radiobutton(self, text = "Yes", variable = question_1_Var, value=1, height=5, width = 20)
Yes_1.pack() #creating 'yes' option

#Here we are assigning values to each option which will be used in the validation

No_1 = Radiobutton(self, text = "No", variable = question_1_Var, value=2, height=5, width = 20)
No_1.pack() #creating 'no' option


def calculate_score_1(self):
Enter_1.config(state="disabled")
#self.question_1.config(state="disabled")
if (question_1_Var.get() == 1) and not (question_1_Var.get() == 2):
print("calculate score has worked") #test lines
#score = score + 1
else:
print("not worked") #testlines


Enter_1 = Button(self, text= "Enter", width=10, command = calculate_score_1)
Enter_1.pack()

最佳答案

calculate_score_1 不是实例的方法,而是在 __init__ 方法内部定义的。因此,该方法不应具有 self 参数。删除该参数,然后它应该可以工作。如果您需要它(您似乎不需要),您仍然可以使用外部 __init__ 方法的 self 参数。

如果您想从另一个类(或者实际上是同一类的另一个方法)访问score,您必须将其定义为,使其成为实例的成员self.score = ... 。然后您可以像这样访问它:your_question_1_window_instance.score

最后,如果您有“十个问题的十个类”,您应该尝试为所有这些问题找到一些共同点,并创建一个通用的父类(super class),甚至一个可以参数化以适应所有问题的类。您只需要标题、类型(选择一个/选择多个)和答案列表,以及哪些答案是正确的。其他一切——创建复选框、检查答案等——应该始终相同。

关于python - 如何从 tkinter 中的单选按钮获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20637507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com