Python 在Kivy的BoxLayout中定位多个小部件。

Python 在Kivy的BoxLayout中定位多个小部件。,python,kivy,Python,Kivy,我有两个小部件在一个水平框布局。好吧,它们都会伸展到盒子布局的一半。如何在boxlayout中调整小部件的大小和重新定位?是否值得将每个小部件放在自己的boxlayout中,这样它就不会受到旁边小部件的影响?以下是我目前的代码: from kivy.app import App from kivy.uix.label import Label from kivy.lang import Builder from kivy.properties import ListProperty from k

我有两个小部件在一个水平框布局。好吧,它们都会伸展到盒子布局的一半。如何在boxlayout中调整小部件的大小和重新定位?是否值得将每个小部件放在自己的boxlayout中,这样它就不会受到旁边小部件的影响?以下是我目前的代码:

from kivy.app import App
from kivy.uix.label import Label
from kivy.lang import Builder
from kivy.properties import ListProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.dropdown import DropDown
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput

from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition

class ShoppingListScreen(Screen):
    pass

class theScreenManager(ScreenManager):
    pass

root_widget = Builder.load_string('''
#:import FadeTransition kivy.uix.screenmanager.FadeTransition

theScreenManager:
    ShoppingListScreen:

<ShoppingListScreen>:
    BoxLayout:
        orientation: 'vertical'

        BoxLayout:
            orientation: 'horizontal'
            size_hint: 1, .3
            Button:
                text: '<'
                size_hint: .1, 1
                font_size: 75
                background_normal: ""
                background_color: 0.18, .5, .92, 1
                on_release: app.root.current = 'main' 

            Label:
                text: 'Login'
                halign: 'left'
                font_size: 50
                canvas.before:
                    Color:
                        rgb: 0.18, .5, .92
                    Rectangle:
                        pos: self.pos
                        size: self.size
            Widget:
                size_hint: .1, 1
                canvas.before:
                    Color:
                        rgb: 0.18, .5, .92
                    Rectangle:
                        pos: self.pos
                        size: self.size
        BoxLayout:
            orientation: 'vertical'
            canvas.before:
                Color:
                    rgb: 1, 1, 1
                Rectangle:
                    pos: self.pos
                    size: self.size
            BoxLayout:
                orientation: 'horizontal'
                padding_left: 250
                Label:
                    text: 'Username:'
                    font_size: 25
                    color: 0.18, .5, .92, 1
                    size_hint: .2, .5
                    pos_hint: {'top': 1}
                TextInput:
                    size_hint: .3, .1
        Button:
            text: 'Register'
            font_size: 35
            size_hint: 1, .3
            background_normal: ""
            background_color: 0.18, .5, .92, 1
            #on_release: app.root.current = 'main' 

        Label:
            text: 'Support'
            color: 0.18, .5, .92, 1
            halign: 'left'
            font_size: 25
            size_hint: 1, .3
            canvas.before:
                Color:
                    rgb: 1, 1, 1
                Rectangle:
                    pos: self.pos
                    size: self.size


''')

class temprecipeapp(App):
    def build(self):
        return root_widget

if __name__ == "__main__":
    temprecipeapp().run()
从kivy.app导入应用
从kivy.uix.label导入标签
从kivy.lang导入生成器
从kivy.properties导入ListProperty
从kivy.uix.boxlayout导入boxlayout
从kivy.uix.dropdown导入下拉列表
从kivy.uix.button导入按钮
从kivy.uix.textinput导入textinput
从kivy.uix.screenmanager导入screenmanager、Screen、FadeTransition
类别ShoppingListScreen(屏幕):
通过
为屏幕管理器(屏幕管理器)分类:
通过
root\u widget=Builder.load\u字符串(“”)
#:导入FadeTransition kivy.uix.screenmanager.FadeTransition
屏幕管理器:
购物清单屏幕:
:
盒子布局:
方向:“垂直”
盒子布局:
方向:“水平”
尺寸提示:1.3
按钮:
文本:'也许这会有帮助:
我只是导入GridLayout并将标签为Usename和TextInput的部件从BoxLayout更改为GridLayout

from kivy.app import App
from kivy.uix.label import Label
from kivy.lang import Builder
from kivy.properties import ListProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.dropdown import DropDown
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput

from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition

class ShoppingListScreen(Screen):
    pass

class theScreenManager(ScreenManager):
    pass

root_widget = Builder.load_string('''
#:import FadeTransition kivy.uix.screenmanager.FadeTransition

theScreenManager:
    ShoppingListScreen:

<ShoppingListScreen>:
    BoxLayout:
        orientation: 'vertical'

        BoxLayout:
            orientation: 'horizontal'
            size_hint: 1, .3
            Button:
                text: '<'
                size_hint: .1, 1
                font_size: 75
                background_normal: ""
                background_color: 0.18, .5, .92, 1
                on_release: app.root.current = 'main' 

            Label:
                text: 'Login'
                halign: 'left'
                font_size: 50
                canvas.before:
                    Color:
                        rgb: 0.18, .5, .92
                    Rectangle:
                        pos: self.pos
                        size: self.size
            Widget:
                size_hint: .1, 1
                canvas.before:
                    Color:
                        rgb: 0.18, .5, .92
                    Rectangle:
                        pos: self.pos
                        size: self.size
        GridLayout:
            cols: 2
            rows: 1
            size_hint: 1, .1
            canvas.before:
                Color:
                    rgb: 1, 1, 1
                Rectangle:
                    pos: self.pos
                    size: self.size            

            Label:
                text: 'Username:'
                font_size: 25
                size_hint: .3, 1
                color: 0.18, .5, .92, 1             
                pos_hint: {'center': 1}

            TextInput:
                size_hint: .7, 1
                font_size: 25
        Button:
            text: 'Register'
            font_size: 35
            size_hint: 1, .3
            background_normal: ""
            background_color: 0.18, .5, .92, 1
            #on_release: app.root.current = 'main' 

        Label:
            text: 'Support'
            color: 0.18, .5, .92, 1
            halign: 'left'
            font_size: 25
            size_hint: 1, .3
            canvas.before:
                Color:
                    rgb: 1, 1, 1
                Rectangle:
                    pos: self.pos
                    size: self.size


''')

class temprecipeapp(App):
    def build(self):
        return root_widget

if __name__ == "__main__":
    temprecipeapp().run()
从kivy.app导入应用
从kivy.uix.label导入标签
从kivy.lang导入生成器
从kivy.properties导入ListProperty
从kivy.uix.boxlayout导入boxlayout
从kivy.uix.gridlayout导入gridlayout
从kivy.uix.dropdown导入下拉列表
从kivy.uix.button导入按钮
从kivy.uix.textinput导入textinput
从kivy.uix.screenmanager导入screenmanager、Screen、FadeTransition
类别ShoppingListScreen(屏幕):
通过
为屏幕管理器(屏幕管理器)分类:
通过
root\u widget=Builder.load\u字符串(“”)
#:导入FadeTransition kivy.uix.screenmanager.FadeTransition
屏幕管理器:
购物清单屏幕:
:
盒子布局:
方向:“垂直”
盒子布局:
方向:“水平”
尺寸提示:1.3
按钮:
正文:'