Kivy:访问按钮图像对象

时间:2014-01-19 01:00:11

标签: python kivy

Kivy Button窗口小部件具有background_normalbackground_down属性,用于在正常和关闭状态下设置背景图像。有没有办法以Image类实例的形式访问它们来修改它们?或者是否有一些API可以直接操作背景

  • 尺寸
  • 位置
  • 重复(x / y)
  • 不透明度
  • 宽高比

等等?

1 个答案:

答案 0 :(得分:2)

不,你不能那样访问它们,因为它们实际上不是Image小部件,而是用图形指令实现的。如果您有兴趣,可以在https://github.com/kivy/kivy/blob/master/kivy/data/style.kv#L18看到。

如果你想要一些不同的行为,我建议制作你自己的ImageButton类。 Kivy的当前开发版本(1.8,即将发布)包括一些更改,通过将按钮的行为抽象为包含/管理触摸和on_press事件等的ButtonBehavior类,使这一点变得特别容易。您可以将其与通过执行class ImageButton(ButtonBehavior, Image)之类的操作来获取带有触摸交互的图像,就像按钮一样 - 尽管在此示例中,如果您需要,您必须自行管理背景。您还可以通过类似的原则制作其他不同的小部件。

制作自己的小部件应该可以轻松控制您获取的属性。从您可以控制的组件小部件构建按钮后,大小和位置当然很容易手动管理。可以通过修改图像的纹理来控制重复(参见'wrap'属性),尽管你可能已经知道了。不透明度是每个小部件的可控属性,当然宽高比是作为Image属性公开的。

总的来说,最好的方法可能是从图像制作自己的小部件并自己添加触摸交互。在Kivy 1.8中,您可以使用ButtonBehavior来轻松实现。在1.7中,将透明按钮放在图像上可能是最简单的。