метод onclick turtle в python 3

#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.