Kivy没有显示两个按钮

时间:2014-01-12 13:54:23

标签: android python kivy

我正在尝试开发一款kaivy应用程序,我对此很新。我尝试用两个按钮制作一个简单的屏幕,但我只看到一个按钮(button1,签入)。我想并排显示两个按钮。任何帮助都非常感谢。

from kivy.app import App
from kivy.lang import Builder

button1 = '''
FloatLayout:

    Button:
        text: 'Check In'
        size_hint: None, None
        pos_hint: {'center_x': .5, 'center_y': .5}
        canvas.before:
            PushMatrix
            Rotate:
                angle: 0
                origin: self.center
        canvas.after:
            PopMatrix
'''

button2 = '''
FloatLayout:

    Button:
        text: 'SOS'
        size_hint: None, None
        pos_hint: {'center_x': 1.5, 'center_y': 1.5}
        canvas.before:
            PushMatrix
            Rotate:
                angle: 45
                origin: self.center
        canvas.after:
            PopMatrix
'''

class RotationApp(App):
    def build(self):
        return Builder.load_string(button1)
    def build2(self):
        return Builder.load_string(button2)

RotationApp().run()

2 个答案:

答案 0 :(得分:1)

当你的应用程序运行时,kivy运行build方法并使用返回的小部件作为根小部件。在你的情况下,你从button1字符串返回按钮,就是这样,完成了工作。

问题是kivy不知道或不关心您编写了build2方法,它没有调用它,也不会知道如何处理返回的小部件,即使它确实如此。

有很多方法可以创建两个相邻的按钮,我不确定你的总体目标是什么,但一个简单的选择就是修改你的一个kv语言字符串以包含相同布局中的两个按钮。我将FloatLayout替换为BoxLayout,它会自动将它们调整为相邻:

button1 = '''
BoxLayout:
    Button:
        text: 'Check In'
        size_hint: None, None
        pos_hint: {'center_x': .5, 'center_y': .5}
        canvas.before:
            PushMatrix
            Rotate:
                angle: 0
                origin: self.center
        canvas.after:
            PopMatrix
    Button:
            text: 'SOS'
            size_hint: None, None
            pos_hint: {'center_x': 1.5, 'center_y': 1.5}
            canvas.before:
                PushMatrix
                Rotate:
                    angle: 45
                    origin: self.center
            canvas.after:
                PopMatrix

'''

我没有尝试过这段代码,你可能会从旋转中得到一些奇怪的行为/重叠,但是放置相邻小部件并让它们都显示出来是正确的一般想法。

答案 1 :(得分:0)

我在浮动布局中使用它来添加3个按钮

<Button>:
    font_size:15
    color:1,0.1,0.1,1
    size_hint:0.1,0.1

<FloatLayout>:
    Button:
        pos_hint: {"left":1}
        text:"Subscribe"  

    Button:
        pos_hint: {"x":0.5,"top":0.5}
        text:"Login"  

    Button:
        pos_hint: {"right":1}
        text:"Signup"