我是 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"
我想要这样的东西:[] 1
我希望这能回答您的问题,但基本上这会创建您的应用程序:
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 类之上的一层,可以为您的应用程序提供更好的视觉效果。