Я делаю игру Truth Or Dare с Tkinter. Я получаю эту ошибку:Python Tkinter Text Output
UnboundLocalError: local variable 'text' referenced before assignment
При выполнении этого кода:
from tkinter import *
import random
tk = Tk()
tk.title("Truth or Dare")
tk.resizable(0, 0)
canvas = Canvas(tk, width=500,height=350)
canvas.create_text(250, 20, text="Truth Or Dare", fill='red', font=('Helvetica', 20))
text = canvas.create_text(250, 200, text='Test!')
def spm():
canvas.delete(text)
spillere = ['Niels','Astrid']
p1 = random.choice(spillere)
p2 = random.choice(spillere)
x1 = random.randint(0,3)
s1 = ['skal spise kage','sig huj ud af vinduet'] # En udfordring til en spiller
s2 = ['kan du lide kage?','har du nogensinde danset step?'] # Et spørgsmål til en spiller
s3 = ['skal sige hej til','skal sige huj til','skal spise kage med'] # Noget med en anden spiller
s4 = ['vil du spise kage med','vil du spise kage med'] # Et spørgsmål om en anden spiller
while True:
if p1 == p2:
p2 = random.choice(spillere)
else:
break
if x1 == 0:
text = canvas.create_text(250, 200, text='%s %s' % (p1, random.choice(s1)), font=('Helvetica', 15))
elif x1 == 1:
text = canvas.create_text(250, 200, text='%s %s' % (p1, random.choice(s2)), font=('Helvetica', 15))
elif x1 == 2:
text = canvas.create_text(250, 200, text='%s %s %s' % (p1, random.choice(s3), p2), font=('Helvetica', 15))
elif x1 == 3:
text = canvas.create_text(250, 200, text='%s %s %s?' % (p1, random.choice(s4), p2), font=('Helvetica', 15))
btn = Button(tk, text="Klik!", command=spm, width=50,height=5,font=('Helvetica' , 15))
btn.pack()
canvas.pack()
Я хочу строка, которая будет отображаться на холсте, когда кнопка нажата и получить новую строку, отображаются при повторном нажатии на кнопку без двух строк в одном и том же месте.
спасибо.
Но это меняет логику программы - теперь, когда вы нажимаете кнопку во второй раз, она не стирает текст на холсте, прежде чем писать больше текста. – Kevin