Python Turtle – обработчик onclick() не работает, если он определен в классеPython

Программы на Python
Ответить
Anonymous
 Python Turtle – обработчик onclick() не работает, если он определен в классе

Сообщение Anonymous »

Возникли проблемы с корректной работой обработчиков onclick в Python Turtle. У меня есть следующий класс в отдельном файле:

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

from typing import Tuple
from turtle import Turtle

class Card:

def __init__(self, val: int, img: str, location: Tuple[float, float],
back: str = "card_back.gif"):
self.value = val
self.front = img
self.back = back
self.location = location
self.turtle = Turtle()

self.is_face_down = True

self.turtle.penup()
self.turtle.goto(self.location)
self.turtle.onclick(self.flip)
self.turtle.showturtle()

def show_back(self):
self.turtle.shape(self.back)
self.is_face_down = True

def show_front(self):
self.turtle.shape(self.front)
self.is_face_down = False

def flip(self, x, y):
if self.is_face_down:
self.show_front()
else:
self.show_back()
Однако, когда я создаю экземпляр в отдельном файле, обработчик onclick не работает. Что работает, так это если я определяю onclick извне, например:

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

...
two_club1 = Card(0, "2_of_clubs.gif", (-400, 250))

two_club1.show_back()
two_club1.turtle.onclick(two_club1.flip) # Without this, the click does not work

turtle.done()
Почему я не могу определить обработчик onclick в самом классе? Насколько мне известно, я смогу определить это в __init__, и это должно работать. Это потому, что я импортирую класс в другой файл?


Подробнее здесь: https://stackoverflow.com/questions/792 ... d-in-class
Ответить

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

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

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

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

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