Форум сайта python.su
Здравствуйте, решил написать очень простой модуль, который может делать по типу кнопок на базе turtle, но вот не задача, при создании второго объекта с наследованием свойств моего модуля, то первый объект теряет свои свойста.
Например в программе script:
from engine import Box, Window btn_1 = Box(0,10) btn_1.drawBox() btn_2 = Box(0,-10) btn_2.drawBox() def test1(): print("1") def test2(): print("2") btn_1.onClickBox(test1) btn_2.onClickBox(test2) Window.mainloop()
Отредактировано Gerod (Сен. 29, 2019 16:39:34)
Прикреплённый файлы:
engine.py (1,7 KБ)
Офлайн
В файле первою строчку заменить на import turtle *
Офлайн
Думаю проблема во функции turtle - onscreenclick, но как это исправить? как сделать, чтоб проверялись несколько функций? Или это особенности turtle?
Офлайн
В место
turtle.Screen().onscreenclick(functionEvent)
self.box.onscreenclick(functionEvent)
Офлайн
Rodegastтак box наследует turtle.Turtle()
В место
Отредактировано Gerod (Сен. 29, 2019 18:22:06)
Офлайн
> а метод onscreensclick от класса turtle.Screen()
Да точно, метод называется onclick, но сути это не меняет.
Отредактировано Rodegast (Сен. 29, 2019 19:36:19)
Офлайн
Но данный метод проверяет, нажал ли пользовать на череаашку, а мне нужны координаты нажатой мышки
Офлайн
> Но данный метод проверяет, нажал ли пользовать на череаашку, а мне нужны координаты нажатой мышки
“a function with two arguments which will be called with the coordinates of the clicked point on the canvas” что означает - функция с двумя аргументами, которая будет вызываться с координатами нажатой точки на холсте
https://docs.python.org/2/library/turtle.html#turtle.onclick
Офлайн
К сожалению он не работает, если на черепашку не нажимать. Мне нужно скрыть черепашку (hideturte) и вызвать метод, который будет проверять координаты мыши
Офлайн
Решил проблему, использовал self.box.screen.onclick(my_func)
Но событие, так же работает только на одну кнопку, если вызвать несколько
Так как при наследовании несколько Box`ов то при вызови каждого, будет один и тот же метод
Пример:
... btn1 = Box(color="green") btn2 = Box(color="blue") print(btn1.color) ...
Отредактировано Gerod (Сен. 30, 2019 10:42:24)
Офлайн