Я пытаюсь создать простой интерфейс из dict
строк внутри функции.Каждая строка используется для отображения текста и кликабельной черепахи (используя onclick()
, чтобы сделать черепаху кликабельной).Это так, чтобы я мог щелкнуть по черепашке и ввести некоторые значения.
Но, если я правильно понял, когда функция заканчивает выполнение цикла через словарь, все переменные, которые должен был определить циклпереопределяются как последний, прошедший через цикл, последний элемент словаря.Таким образом, функция onclick()
возвращает мне только последний элемент словаря.
Есть ли способ заставить одну функцию onclick()
реагировать / соответствовать каждому элементу словаря?Я действительно не хочу писать кучу onclick()
функций для каждого элемента словаря.Я пытаюсь узнать лучший способ.
list_alunos={'joao': ['5', 'm'],'maria': ['5', 'm'],'lobo': ['5', 'm'],'mau': ['5', 'm']}
def caca(dictx,file):
import turtle
mes=file
vert=350
hor=-600
def got(t,x,y,d) :
t.penup()
t.goto(x,y)
t.pendown()
t.seth(d)
def text(t,text, size, color, pos1, pos2):
t.penup()
t.goto(pos1, pos2)
t.color(color)
t.begin_fill()
t.write(text, font=('Arial', size, 'normal'))
t.end_fill()
new_vert = vert
for key in dictx:
nome = key
if vert == -340:
new_vert = 350
new_hor = hor + 250
if vert!= -340:
new_vert= new_vert-30
new_hor = hor
txt_vert = new_vert - 15
txt_hor = new_hor + 20
screen = turtle.Screen()
width = 1200
height = 1500
turtle.screensize(width, height)
tnome = turtle.Turtle(shape='turtle')
tnome.color('pink')
textnome = turtle
tnome.speed('fastest')
textnome.speed('fastest')
text(textnome, '%s' %(nome), '20', 'pink', txt_hor,txt_vert)
got(tnome,new_hor,new_vert,0)
def tnome_handler(x, y):
pos = list(dictx.keys()).index(nome)
listt = list(dictx)
pnt = screen.textinput(' pontuação', '%s: '%(listt[pos]))
pnt = [int(x) for x in pnt.split()]
if len(pnt) == 5 :
with open('%s.py' %(mes), 'a') as fd:
fd.write('\n%s.pontuacao(%i,%i,%i,%i,%i)' % (nome,pnt[0],pnt[1],pnt[2],pnt[3],pnt[4]))
tnome.color('blue')
tnome.onclick(tnome_handler)
caca(list_alunos,'mm')