在kivy中按钮内组合图像和文本

Jam*_*s_L 10 kivy

在按钮中组合图像/图标和文本的首选方法是什么?例如,如何创建一个按钮text = 'my button',并在该文本的左侧创建一个图形图标?

tot*_*ico 15

关于问题#2.

Kivy的工作方式是嵌入Widget实例.由于ImageButton是控件的子类,那么所有你需要做的就是嵌入图像的一个按钮内.请注意,窗口小部件内的定位是固定的.你必须给出明确的坐标.

也就是说,你总是可以嵌入一个Layout来组织你在Button里面放的东西.

这是简单的前任

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 - 200
            x: self.parent.x
    Label:
        text: "A label"
""")

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

if __name__ == "__main__":
    ButtonsApp().run()
Run Code Online (Sandbox Code Playgroud)

编辑:如何将相对布局嵌入按钮内的示例

在这种情况下,我使用a StackLayout来组织一个Image和一个Label内部.正如我所说,Button是一个Widget和Kivy工作在窗口小部件中嵌入小部件.它们是标签,按钮还是布局并不重要.

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

Builder.load_string("""
<ButtonsApp>:
    orientation: "vertical"
    Button:
        StackLayout:
            pos: self.parent.pos
            size: self.parent.size
            orientation: 'lr-tb'
            Image:
                source: 'kivy.png'
                size_hint_x: None
                width: 74
            Label:
                size_hint_x: None
                width: 100
                text: "The text"
    Label:
        text: "A label"
""")

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

if __name__ == "__main__":
    ButtonsApp().run()
Run Code Online (Sandbox Code Playgroud)