#python #python-3.x #turtle-graphics
#python #python-3.x #черепаха-графика
Вопрос:
Я воссоздаю игру x и os, но, похоже, я не могу заставить метод onclick в python3 работать вот мой код:
def hide(t):
t.hideturtle()
def begin():
global playersTurn
if playersTurn == 0:
playerOnesTurn.showturtle()
playerOnesTurn.onclick(hide)
else:
playerTwosTurn.showturtle()
playerTwosTurn.onclick(hide)
Я показываю изображение в черепахе playerOnesTurn
и playerTwosTurn
.
Когда я запускаю программу и хочу, чтобы черепаха скрывалась, когда игрок нажимает на изображение, это выдает следующую ошибку, и я не нашел решения:
TypeError: hide() takes 1 positional argument but 2 were given
Комментарии:
1. пробовал поместить второй аргумент в hide, а затем распечатать их оба и посмотреть, что передается?
Ответ №1:
onclick()
Обработчик ожидает функцию, которая принимает позиции x и y в качестве аргументов. Итак, вместо этого сделайте что-то вроде:
playerOnesTurn.onclick(lambda x, y: playerOnesTurn.hideturtle())
Другие комментарии: если вы только проверяете playersTurn
, а не меняете его, то вам не нужен global playersTurn
оператор; когда вы включаете onclick()
для одного игрока, вы можете отключить его для другого игрока, выполнив playerTwosTurn.onclick(None)
.
Комментарии:
1. Спасибо cdlane. Я изменил свой код, и я больше не получаю ошибку, но дело в том, что теперь он полностью закрывает окно, а это не то, что я ищу.
2. @AbigailLeahSingh, ты не звонишь
turtle.exitonclick()
, не так ли? Если это так, замените его на вturtle.mainloop()
противном случае у вас есть два обработчика onclick.