Как грамотно добавлять виджеты в Kivy?
При попытке добавить новые виджеты у них ставятся координаты (0;0) и я не знаю как расположить их друг за другом. (информация должна генерироваться автоматически и в процессе использования программы она будет меняться)
Что должно в итоге получиться:
python3
from kivy.lang import Builder
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.app import MDApp
from kivymd.uix.button import MDRectangleFlatButton
from kivy.uix.image import Image
with open('pv.kv') as file:
KV = file.read()
class ContentNavigationDrawer(MDBoxLayout):
page_now = 0
last_scr = ""
def page_change(self, scr):
if self.last_scr == scr: return None
else: self.last_scr = scr
self.page_now = (self.page_now+1)%2
self.screen_manager.current = f"page {self.page_now}"
screen = self.screen_manager.screens[self.page_now]
screen.clear_widgets()
screen.add_widget(MDRectangleFlatButton(text="1"))
screen.add_widget(MDRectangleFlatButton(text="2"))
class TestNavigationDrawer(MDApp):
def build(self):
self.theme_cls.theme_style = "Dark"
self.theme_cls.primary_palette = "Purple"
self.theme_cls.primary_hue = "200"
return Builder.load_string(KV)
TestNavigationDrawer().run()
KV
<ContentNavigationDrawer>:
ScrollView:
MDList:
OneLineListItem:
text: "1"
on_press:
root.nav_drawer.set_state("close")
root.page_change("scr 1")
OneLineListItem:
text: "2"
on_press:
root.nav_drawer.set_state("close")
root.page_change("scr 2")
MDScreen:
MDToolbar:
id: toolbar
pos_hint: {"top": 1}
elevation: 10
size: self.x, 50
title: "test"
left_action_items: [["menu", lambda x: nav_drawer.set_state("open")]]
MDNavigationLayout:
visible: "Selected"
ScreenManager:
id: screen_manager
MDScreen:
name: "page 0"
MDLabel:
text: "page 0"
halign: "center"
MDScreen:
name: "page 1"
MDLabel:
text: "page 1"
halign: "center"
MDNavigationDrawer:
id: nav_drawer
ContentNavigationDrawer:
screen_manager: screen_manager
nav_drawer: nav_drawer
