Отображение списка MDList в моем файле kivymd не работает - PullRequest
2 голосов
/ 06 мая 2020

Я работаю над проектом с python и kivymd, и я хочу отобразить MDList в моем файле kv (list.kv), но он не работает, я не знаю, в чем проблема !! любые предложения, это main.py

from kivy.lang import Builder
from mysql.connector import Error
from baseclass.start import Start
from kivy.lang import Builder  
from threading import Thread
from kivy.uix.screenmanager import Screen
from kivy.utils import get_color_from_hex
from spin_load import ProgressSpinner
from kivymd.color_definitions import colors
from kivy.uix.recycleview import RecycleView
from kivy.core.window import Window
from kivy.uix.recycleview import RecycleView
import mysql.connector
from kivymd.uix.menu import MDDropdownMenu
from kivy.properties import OptionProperty
from kivy.properties import ObjectProperty
from kivymd.uix.bottomsheet import MDListBottomSheet
from kivymd.uix.expansionpanel import MDExpansionPanel
from kivymd.uix.boxlayout import BoxLayout
from kivymd.uix.list import OneLineListItem


Window.size = (360, 600)


class Codebarre(Screen):
    def on_start(self):
        for i in range(20):
            self.root.ids.container.add_widget(
                OneLineListItem(text=f"Single-line item {i}")
            )        
class MyApp(MDApp):
    def build(self):
        self.theme_cls.primary_palette = "DeepPurple"
        return Builder.load_file("main.kv")

MyApp().run() 

, и это файл, в котором я хочу отобразить MDList

list.kv

#:import utils kivy.utils

<Codebarre>:
    name: 'codebarre'
    ScrollView:
        MDList:
            id: container ```


1 Ответ

0 голосов
/ 06 мая 2020

Оказывается, метод on_start() никогда не вызывался. Ниже приведена рабочая версия main.py. Я не менял list.kv.

from kivy.lang import Builder
from threading import Thread
import kivy.clock
from kivy.uix.screenmanager import Screen
from kivy.utils import get_color_from_hex
from kivymd.color_definitions import colors
from kivy.uix.recycleview import RecycleView
from kivy.core.window import Window
from kivy.uix.recycleview import RecycleView
from kivymd.uix.menu import MDDropdownMenu
from kivy.properties import OptionProperty
from kivy.properties import ObjectProperty
from kivymd.uix.bottomsheet import MDListBottomSheet
from kivymd.uix.expansionpanel import MDExpansionPanel
from kivymd.uix.boxlayout import BoxLayout
from kivymd.uix.list import OneLineListItem
from kivymd.app import MDApp
from kivy.uix.stacklayout import StackLayout


Window.size = (360, 600)


class Codebarre(Screen):

    def __init__(self, **kvargs):
        self.app = MDApp.get_running_app()
        super().__init__(**kvargs)
        kivy.clock.Clock.schedule_once(self.build)

    def build(self, *args):
        for i in range(20):
            self.ids.container.add_widget(
                OneLineListItem(text=f"Single-line item {i}")
            )        

class MyApp(MDApp):
    def build(self):
        self.theme_cls.primary_palette = "DeepPurple"
        Builder.load_file("list.kv")
        return Codebarre()

MyApp().run()

...