Как мы называем itterative функцию в tkinter - Python-? - PullRequest
0 голосов
/ 15 апреля 2019

Я новичок в tkinter, и я хотел бы начать цикл с того момента, как нажал клавишу на клавиатуре.Только когда я вызываю свою первую функцию, у меня появляется ошибка:

TypeError: anime_avancer () отсутствует 1 обязательный позиционный аргумент: 'событие'.

Я понимаю, что есть какое-то отношение кметод связывания, но я не понимаю структуру ... Заранее спасибо!

from tkinter import *

fen=Tk()
can=Canvas(fen,bg="light gray", height=500, width=500)
can.pack()

def afficher_codeur():
    #code here
    anime_avancer()

def anime_avancer(event):
    #code here#
    afficher_codeur()

fen.bind("<Right>", anime_avancer)

fen.mainloop()

Я хотел бы получить объяснения роли "события", если это возможно, спасибо!;)

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Ваш anime_avancer обратный вызов имеет вызов afficher_codeur, который снова вызывает себя anime_avancer, но без аргументов вместо одного.Следовательно, ошибка времени выполнения.

Если вы хотите в какой-то момент вызвать свой метод anime_avancer, но без каких-либо аргументов, просто вызовите anime_avancer(None).

event в обратном вызове Tkinter canvas:позиционный аргумент, который хранит различную информацию о состоянии вашей клавиатуры и мыши при возникновении события.Например, event.x и event.y хранят положение вашей мыши.

См. Полную документацию по Canvas.bind() здесь .

Полный пример того, какиспользовать метод обратного вызова в Tk можно здесь .

0 голосов
/ 15 апреля 2019

Благодаря Антуану C ответом было поставить «None» в качестве аргумента функции anime_avancer в цикле afficher_codeur!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...