EDIT: Ich habe den Code so bearbeitet, dass es ausführbar ist und alle Variablen definiert sind.for Schleife dauert nur letzten Eintrag Wert (Python/Tkinter)
Ich habe dieses Stück Code:
from Tkinter import *
root = Tk()
class question_list:
list = []
class question:
answers = []
def __init__(self,content):
self.content = content
class Emotion:
def __init__(self, name, value):
Emotion.name = name
Emotion.value = value
class answer:
emotions = [Emotion("Anger",0)]
def __init__(self, content):
self.content = content
questions = question_list()
buttonlist = []
entries = []
clicked = 0
questions.list.append(question("On a scale of 1-10, is it moral?"))
for num in range(10):
questions.list[0].answers.append(answer(num+1))
frame1 = Frame(root)
frame1.pack(anchor = 'w')
Label1=Label(frame1, text = "You chose SCALE. Examine the scale below. Click each number to view a description and set the values for each given emotion.")
Label1.pack(anchor = 'w')
frame2 = Frame(frame1)
frame2.pack()
for num in range(1,11):
btn = Button(frame2, text=num, command = lambda num=num:scaleset(num))
btn.pack(side=LEFT)
buttonlist.append(btn)
def scaleset(n):
global clicked
buttonlist[n - 1].config(state=DISABLED)
clicked += 1
frame3 = Frame(frame2)
frame3.pack(anchor='w')
label2 = Label(frame3, text="Enter a value between -10 and 10 for each emotion. Enter \"0\" for no effect.",
wraplength=700, justify=LEFT)
label2.pack(anchor='w')
button = Button(frame3, text="Continue", command=lambda: reset())
for number in range(len((questions.list[0].answers[0].emotions))):
frame = Frame(frame3)
frame.pack(anchor='w')
label = Label(frame, text=questions.list[0].answers[0].emotions[number].name)
label.pack(side=LEFT)
entry = Entry(frame)
entry.pack(side=RIGHT)
entries.append(entry)
frame4 = Frame(frame3)
frame4.pack(anchor='w')
button2 = Button(frame4, text="Done", command=lambda:set_scaleanswers(frame4))
button2.pack(side=LEFT)
def set_scaleanswers(frame):
for num in range(len(questions.list[0].answers[0].emotions)):
questions.list[0].answers[clicked - 1].emotions[num].value = entries[num].get()
HeaderScale2 = Label(frame, text="Answer recorded.")
HeaderScale2.pack(side=RIGHT)
button.pack(anchor='w')
del entries[:]
button2.config(state=DISABLED)
def reset():
frame3.destroy()
root.mainloop()
Say für die 1
Taste, die Benutzereingaben "1". Für die Schaltfläche 2
gibt der Benutzer "2" ein. Für die Schaltfläche 3
gibt der Benutzer "3" ein.
Meine erwarteten Ergebnisse sind:
questions.list[0].answers[0].emotions[0].value = 1
questions.list[0].answers[1].emotions[0].value = 2
questions.list[0].answers[2].emotions[0].value = 3
Stattdessen erhalte ich:
questions.list[0].answers[0].emotions[0].value = 3
questions.list[0].answers[1].emotions[0].value = 3
questions.list[0].answers[2].emotions[0].value = 3
Wie kann ich es beheben, damit ich meine gewünschte resu erhalten Es?
Könnten Sie bitte eine [MCVE] (https://stackoverflow.com/help/mcve) – Feodoran
Sie müssen zeigen uns die Definition von 'questions' einrichten. – BoarGules
Definition von Fragen hinzugefügt @BoarGules – Naomi