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提供的教程,以便了解它的工作原理。