Создание блоков в kivymd
Делаю приложение на python, котрое взаимодействует в SQLite добавляя или выводя записи (значения)
Прошёл через русских, английских, индуских блогеров, но не нашёл решения или примера, как созлавать блоки со значениями. Везде статическое всё.
Допустим есть таблица с фамилией, именем, возрастом и краткой информацией. Нужно, чтобы в заранее созданый шаблон блока добавлялись значения и выводиличь на экран несколько блока
Ответы (1 шт):
Как оказалось очень просто. Создаём метод, который возвращает необходимые блоки. Можно в качестве параметров принимать значения, которые необходимо вставить.
from kivy.uix.button import Button
from kivymd.uix.label import MDLabel
from kivymd.uix.gridlayout import GridLayout
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.app import MDApp
class MainApp(MDApp):
def CreateBox(self):
bl = MDBoxLayout(orientation='vertical', padding=10)
bl.add_widget(MDLabel(text="Hello, World", halign="center"))
bl.add_widget(Button(text="Hello, World", pos_hint={'center_x': 0.5, 'center_y': 0.5}))
bl.add_widget(MDLabel(text="Hello, World", halign="center"))
return bl
def build(self):
gl = GridLayout(cols=3, padding=10)
for i in range(10):
gl.add_widget(self.CreateBox())
return gl
MainApp().run()
А ещё я немного пошаманил и цикл перенёс в метод, который принимает количество итераций(блоков), так же можно передавать массив данных.
from kivy.uix.button import Button
from kivymd.uix.label import MDLabel
from kivymd.uix.gridlayout import GridLayout
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.app import MDApp
class MainApp(MDApp):
def CreateBox(self, number_blocks=3):
big_layout = GridLayout(cols = 3, padding=10)
for i in range(number_blocks):
bl = MDBoxLayout(orientation='vertical', padding=10)
text_widgets = "Hello, World" + str(i)
bl.add_widget(MDLabel(text=text_widgets, halign="center"))
bl.add_widget(Button(text=text_widgets, pos_hint={'center_x': 0.5, 'center_y': 0.5}))
bl.add_widget(MDLabel(text=text_widgets, halign="center"))
big_layout.add_widget(bl)
return big_layout
def build(self):
bl = GridLayout(cols=3, padding=10)
bl.add_widget(self.CreateBox(10))
return bl
MainApp().run()
Фото итога последней версии
