Ich versuche, dynamisch ein Kivy-Layout mit einem vertikalen BoxLayout zu erstellen, das eine variierende Anzahl von benutzerdefinierten MyRow
Widgets enthält, die zur Laufzeit geändert werden können. jede Zeile eine horizontale BoxLayoutKivy verschachtelte BoxLayout stapelt Widgets auf der linken unteren Ecke
Ich bin ein Gridlayout nicht verwenden, da MyRow
Layout entwickelt wird und in naher Zukunft ändern können Widgets usw. wie in diesem Beispiel
Aber mit dem Code hinzufügen unten bekomme ich nur kleine Widgets in der unteren linken Ecke des Fensters übereinander gestapelt.
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import StringProperty
class MyRow(Widget):
a = StringProperty('a')
b = StringProperty('b')
def __init__(self, **kwargs):
super(MyRow, self).__init__(**kwargs)
class MainScreen(Widget):
rows = [['a1','b1'],['a2','b2']] #example data
mainLayout = BoxLayout(orientation='vertical', spacing=5)
def __init__(self, **kwargs):
super(MainScreen, self).__init__(**kwargs)
self.add_widget(self.mainLayout)
for r in self.rows:
row_widget = MyRow()
row_widget.a = r[0]
row_widget.b = r[1]
self.mainLayout.add_widget(row_widget)
class MyApp(App):
def build(self):
return MainScreen()
if __name__ == '__main__':
MyApp().run()
und dies ist die kv-Datei:
<MyRow>
BoxLayout:
orientation: "horizontal"
spacing: 30
Label:
id: a_label
text: root.a
Label:
id: b_label
text: root.b
Wurde Ihre Frage beantwortet? Wenn dies in Betracht gezogen wird, oder wenn es Ihnen nur geholfen hat, können Sie darüber nachdenken, es zu erhöhen. – PalimPalim