我如何在stacklayout中使用floatLayout

时间:2018-02-28 05:50:34

标签: python kivy

我正在制作一个应用程序,在一个屏幕上,我希望按钮堆叠在屏幕的右边缘(我需要堆栈布局)和屏幕中央的2个按钮(为此我想使用浮动布局)。我已经搜索过了,但我无处可见任何在一个屏幕上使用两种不同布局的例子。

我们可以在屏幕上使用两种不同的布局吗?如果是,我们怎么能这样做?

她的示例代码 -

    from kivy.uix.stacklayout import StackLayout
    from kivy.uix.floatlayout import FloatLayout
    from kivy.uix.screenmanager import ScreenManager, Screen 

    class screen_1(Screen,Stacklayout): ''' here I tried to inherit 
                                            floatlayout, but i guess it 
                                            doesnt work that way'''
        pass

    class main(App):
        def build(self):
            return screen_1()

    m = main()
    m.run()

kivy代码 -

    <screen_1>:
        StackLayout:
            orientation: 'tb-rl'
            spacing: 10
            padding: 90
            TextInput:
                text: "write your word here"
                color: 1,1,1,1
                id: word_input
                width: 300
                size_hint: None, .10
            stackLayout:
                orientation: 'rl-tb'
                spacing: 10
                padding: 90
                TextInput:
                    text: "write your word here"
                    color: 1,1,1,1

1 个答案:

答案 0 :(得分:0)

布局,湖泊所有小部件,可以嵌套。

如果您想在屏幕上使用两种布局,只需将它们放在合适的布局中即可管理各自的尺寸/位置。

首先,您可能不希望使用小部件进行多重继承,至少不从多个小部件继承(从一个小部件继承,一个或多个其他对象可以很好,但从多个小部件继承会导致问题) 。此外,Screen已经是RelativeLayout [1],几乎与FloatLayout相同(只有它使孩子的pos坐标相对于自己的坐标。) / p>

相反,你想要的是(通过嵌套)。

Screen:
    StackLayout:
        size_hint: .5, 1  # let's take half of the screen in width, and all of it in height
        # whatever you want inside this layout
    BoxLayout:
        size_hint: .5, 1 # same, half of the width, all of the height
        pos_hint: {'right': 1} # stick to the right of the screen
        Button:

[1] https://kivy.org/docs/api-kivy.uix.screenmanager.html?highlight=screen#kivy.uix.screenmanager.Screen
[2] https://kivy.org/docs/api-kivy.uix.relativelayout.html#kivy.uix.relativelayout.RelativeLayout