BoxLayout kivy 中的元素

问题描述 投票:0回答:1

我是 kivy 的新手,想要创建一个小应用程序。这将显示不同的文本(从数据库加载)。 我尝试制作一个

BoxLayout
,但这非常困难,特别是因为我必须访问此元素中的 id。我想我走错了方向。

py代码

import kivy
from kivy.uix.label import Label
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
class Container(BoxLayout):
    def __init__(self, **kwargs):
        super(Container, self).__init__(**kwargs)
        w=BoxLayout()
        self.ids.tr.add_widget(w)
        
class MyApp(App):
    def build(self):
        return Container()


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

kv代码

<container>:
    orientation:"vertical"
    Label:
        text: "Plan"
    BoxLayout:
        id:tr
        Label
            id: id1
            text: "text1"
        Label:
            id: id2
            text: "text2"
        Label:
            id: id3
            text: "text3"

我想要这样的东西:[enter image description here] 1

python kivy kivy-language
1个回答
0
投票

我希望这能回答您的问题,但基本上这会创建您的应用程序:

from kivymd.app import MDApp
from kivymd.uix.boxlayout import MDBoxLayout

class Container(MDBoxLayout):    
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.ids.id2.text = 'Hello'

#class Container(MDBoxLayout):    
#    pass
        
class MyContainerApp(MDApp):
    def build(self):
        self.container = Container()
        
        return self.container

if __name__ == '__main__':
    MyContainerApp().run()

如果您不需要解决 ids,您可以简单地初始化容器,而无需进一步指定(代码中的注释部分)。

几个月前,另一个技巧可以让我省去很多重构的麻烦:看一下 kivymd 包,它是大多数 kivy 类之上的一层,可以为您的应用程序提供更好的视觉效果。

© www.soinside.com 2019 - 2024. All rights reserved.