Pasando objeto de imagen como fondo de botón en Kivy

En Kivy, ¿hay una manera de pasar el objeto de imagen como fondo de botón, en lugar del nombre del archivo de imagen?

button.background_normal propiedad button.background_normal solo acepta cadenas. Me gustaría personalizar las propiedades de la imagen, como allow_stretch = False .

Si eso tiene éxito, ¿cómo puedo especificar la alineación de la imagen dentro de un botón, por ejemplo? ¿Para que esté alineado arriba a la izquierda?

La fuente es solo una propiedad de Button y es una cadena como usted señaló. Quieres un Widget dentro de un Widget, y esa es la forma básica en que Kivy funciona. Así que solo agrega la imagen como es. Un poco de posicionamiento haría el rest.

Hay que tener cuidado con el posicionamiento. Asegúrate de que esté en una parte visible y que nada lo cubra. Uso una etiqueta después del botón porque tiene un color transparente para que pueda experimentar con él. Por ejemplo, si su posición es incorrecta (pruebe con x:0 y:0 ) puede ver el botón que va a la esquina inferior izquierda en el área de la etiqueta.

La imagen que estoy usando es el logo de Kivy :

 from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.lang import Builder Builder.load_string(""" : 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() 

Además de la respuesta de toto_tico, puede ubicar la imagen en el centro del botón como:

 Button: id: myButton Image: source: "./buttonImage.PNG" center_x: self.parent.center_x center_y: self.parent.center_y