Python 如何在行或列中显示每个标签

Python 如何在行或列中显示每个标签,python,kivy,Python,Kivy,在下面的代码中,我有一个第二个屏幕,我试图在这个屏幕上添加两个按钮,但一个按钮在另一个上面,当我使用标签时,我可以看到它 我需要在一行或一列上添加每个标签,因为目前我甚至无法阅读标签文本 以下是我将标签添加到新屏幕的方式: self.new_screen.add_widget(Label(text='LABEL NUMER 1')) self.new_screen.add_widget(Label(text='THIS IS THE LABEL NUMBER 2')) 完整代码: import

在下面的代码中,我有一个第二个屏幕,我试图在这个屏幕上添加两个按钮,但一个按钮在另一个上面,当我使用标签时,我可以看到它

我需要在一行或一列上添加每个标签,因为目前我甚至无法阅读标签文本

以下是我将标签添加到新屏幕的方式:

self.new_screen.add_widget(Label(text='LABEL NUMER 1'))
self.new_screen.add_widget(Label(text='THIS IS THE LABEL NUMBER 2'))
完整代码:

import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen

class Grid(GridLayout):
    def __init__(self, **kwargs):
        super(Grid, self).__init__(**kwargs)
        self.rows= 3

        self.titlet = Label(text='MAIN SCREEN')
        self.add_widget(self.titlet)

        self.MainGrid = GridLayout()
        self.MainGrid.cols = 2

        self.b4 = Button(text="Botao")
        self.MainGrid.add_widget(self.b4)

        self.add_widget(self.MainGrid)


class MyScreenManager(ScreenManager):
    def __init__(self, **kwargs):
        super(MyScreenManager, self).__init__(**kwargs)

        self.main_screen = Screen(name="main_screen")
        self.new_screen = Screen(name="new_screen")
        self.add_widget(self.main_screen)
        self.add_widget(self.new_screen)

        self.grid = Grid()
        self.grid.b4.bind(on_press=self.change_screen)

        self.new_screen.cols = 2

        self.new_screen.add_widget(Label(text='LABEL NUMER 1'))
        self.new_screen.add_widget(Label(text='THIS IS THE LABEL NUMBER 2'))

        self.main_screen
        self.main_screen.add_widget(self.grid)

    def change_screen(self, *args):
        self.current = "new_screen"


class MyApp(App):
    def build(self):
        return MyScreenManager()


if __name__ == "__main__":
    MyApp().run()

与您在第一个屏幕上建立布局的方式相同,您必须在第二个屏幕上建立布局,在这种情况下,您必须使用BoxLayout:

从kivy.uix.boxlayout导入boxlayout
# ...
类MyScreenManager(屏幕管理器):
定义初始(自我,**kwargs):
超级(MyScreenManager,self)。\uuuu初始化(**kwargs)
self.main\u screen=screen(name=“main\u screen”)
self.new\u screen=屏幕(name=“new\u screen”)
self.add_小部件(self.main_屏幕)
self.add\u小部件(self.new\u屏幕)
self.grid=grid()
self.grid.b4.bind(在屏幕上按=self.change)
长方体布局=长方体布局(方向=“垂直”)
self.new\u screen.add\u小部件(框布局)
框\布局。添加\小部件(标签(text='Label NUMER 1'))
框\布局。添加\小部件(标签(text='THIS IS Label NUMBER 2'))
self.main\u screen.add\u小部件(self.grid)
# ...

谢谢,又工作了。但是为什么我不能使用GridLayout呢?还有,如果我需要创建另一个屏幕,我需要使用其他网格管理器怎么办?@LuanGabriel,他指出你不能使用GridLayout?,你可以使用它,但对我来说,使用BoxLayout更正确,因为你需要设计行或列,GridLayout是网格结构。我建议你学习一些基本的kivy课程,或者至少阅读kivy提供的教程,以便了解它的工作原理。