13

在 Kivy 中,有没有办法将图像对象作为按钮背景传递,而不是图像文件名?

button.background_normal属性只接受字符串。我想自定义图像属性,例如allow_stretch = False.

如果成功,我如何在按钮内指定图像对齐,例如。使其左上对齐?

4

3 回答 3

17

源只是 Button 的一个属性,正如您所指出的,它是一个字符串。你想要一个 Widget 里面有一个 Widget,这就是 Kivy 工作的基本方式。所以只需按原样添加图像。一点定位就可以完成剩下的工作。

你必须小心定位。确保它位于可见部分并且没有任何东西覆盖它。我在按钮后使用标签,因为它具有透明颜色,因此您可以尝试使用它。例如,如果您的定位错误(尝试x:0 y:0),您可以看到按钮位于标签区域的左下角。

我使用的图像是Kivy 标志

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder

Builder.load_string("""
<ButtonsApp>:
    orientation: "vertical"
    Button:
        text: "B1"
        Image:
            source: 'kivy.png'
            y: self.parent.y + self.parent.height - 250
            x: self.parent.x
            size: 250, 250
            allow_stretch: True
    Label:
        text: "A label"
""")

class ButtonsApp(App, BoxLayout):
    def build(self):
        return self

if __name__ == "__main__":
    ButtonsApp().run()
于 2013-07-01T03:07:14.577 回答
13

除了 toto_tico 的回答,您还可以将按钮中心的图像定位为:

Button:
    id: myButton
    Image:
        source: "./buttonImage.PNG"
        center_x: self.parent.center_x
        center_y: self.parent.center_y
于 2015-04-06T23:19:30.120 回答
1

您可以使用

按钮:

  id:mybutton

  background_down: "bgdown.png"

  background_normal: "bg.png"
于 2020-05-13T12:20:35.197 回答