События множественного щелчка Python TurtlePython

Программы на Python
Ответить
Anonymous
 События множественного щелчка Python Turtle

Сообщение Anonymous »

Я пытаюсь создать черепаховую версию головоломки с 8 ферзями, используя Python Turtle.

Я начал, но столкнулся с проблемой, связанной с тем, что событие щелчка на пользовательском объекте Turtle, кажется, срабатывает только один раз. Я знаю, что события щелчка по экрану срабатывают несколько раз, так это особенность экземпляров Turtle? Что мне не хватает?

Код: Выделить всё

import turtle

screen = turtle.Screen()
screen.reset()
SIZE = 40
screen.register_shape('box', ((-SIZE/2, SIZE/2), (SIZE/2, SIZE/2), (SIZE/2, -SIZE/2), (-SIZE/2, -SIZE/2)))
screen.register_shape('images/queenlogo40x40.gif')

class Box(turtle.Turtle):
def __init__(self, x=0, y=0, place_color='green'):
super(Box, self).__init__()
self.place_color = place_color
self.speed(0)
self.penup()
self.shape("box")
self.color(place_color)
self.setpos(x, y)
self.has_queen = False
self.onclick(self.click_handler)

def click_handler(self, x, y):
print("start:" , self.has_queen)

if self.has_queen:
self.shape('box')
self.has_queen = False
else:
self.shape('images/queenlogo40x40.gif')
self.has_queen = True

print("end:" , self.has_queen)

def __str__(self):
""" Print piece details """
return "({0}, {1}), {2}".format(self.xcor(), self.ycor(), self.place_color())
Изменить: я могу это исправить, добавив self.onclick(self.click_handler) в обработчик кликов, но это кажется неправильным. Я уверен, что видел подобную функциональность без необходимости перепривязывать событие каждый раз при его использовании.

Подробнее здесь: https://stackoverflow.com/questions/500 ... ick-events
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»