【发布时间】:2019-02-08 01:02:29
【问题描述】:
我对 Kivy 有点陌生,我正在寻找一种方法来在光标悬停时为按钮设置动画。
我尝试了一种方法来获取鼠标位置并将其与按钮坐标进行比较,但根本没有成功。
【问题讨论】:
-
您确实应该发布minimal reproducible example,但请查看kivy
Windows的mouse_pos 属性。您可以将方法绑定到该属性。
我对 Kivy 有点陌生,我正在寻找一种方法来在光标悬停时为按钮设置动画。
我尝试了一种方法来获取鼠标位置并将其与按钮坐标进行比较,但根本没有成功。
【问题讨论】:
Windows 的mouse_pos 属性。您可以将方法绑定到该属性。
这个问题已经(大部分)在this post 得到了回答。在 LGPL 许可下,Olivier POYEN 提供了一个很好的 here 示例。基本上他已经定义了一个名为HoverBehavior 的类,你应该继承它来创建一个新类,例如HoverButton 或 HoverLabel(如他的示例所示)。然后您可以访问on_enter 和on_leave 函数,您可以使用它们来更改按钮的图像,或更改标签的文本颜色,或任何您需要的东西。
要回答您的确切问题,我会寻求了解 HoverBehavior 类,然后从上面的源代码复制/粘贴它,然后像这样创建一个新类:
class HoverButton(Button, HoverBehavior):
def on_enter(self, *args):
self.background_normal = "some_image1.png" # Change the button's image when entered
def on_leave(self, *args):
self.background_normal = "some_other_image.png" # Change image when leaving
或者你可以使用看起来更干净的kv语言:
<HoverButton>:
background_normal: "some_image1.png" if self.hovered else "some_other_image.png"
如果您使用第二个选项,请确保在您的 python 脚本中包含 HoverButton 的基类:
class HoverButton(Button, HoverBehavior):
pass
【讨论】: