Реализовать событие мыши Kivy Button - PullRequest
0 голосов
/ 01 октября 2019

Я делаю графический интерфейс, который будет иметь две кнопки. Я хочу выполнить своего рода анимацию для обоих из них, когда кто-то наводит на них .

Теперь я знаю, что использование Window.bind(mouse_pos=my_mouse_pos_func) - это обходной путь, так как для on_mouse_hover нетbutton.bind() как on_press и on_release. Но это не работает для меня, так как я не могу указать, какие виджеты на моем экране привязывают мою функцию при использовании Window.bind(). Это работает некоторым способом, но только если я получаю курсор в моем главном окне.

Я много искал это, и почти в 90% результатов я нашел людей, рекомендующих Window.bind(). А остальные 10% - это обходные пути, но они мне не совсем понятны, например, такие обходные пути, как «прослушивание событий мыши» и тому подобное.

Извините, поскольку я могу предоставить любой код, так как я вполнене знаю, что показать. Если кто-нибудь знает какие-либо простые обходные пути к этому, их помощь будет абсолютно оценена

1 Ответ

0 голосов
/ 02 октября 2019

Я использую упомянутый Window.bind() в методе __init__() моего приложения как:

    Window.bind(mouse_pos=self.on_mouse_pos)

Затем в методе on_mouse_pos() я использую метод collide_point(), чтобы определить, является ли мышьнаходится над любым из Buttons в вопросе:

def on_mouse_pos(self, window, pos):
    for butt in self.root.ids.butt_box.children:
        if butt.collide_point(*pos):
            # do something here

Вам просто нужен список Buttons, который вы хотите проверить (я использую дочерние элементы контейнера).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...