簡體   English   中英

'super' object 在 kivymd 中沒有屬性 '__getattr__'

[英]'super' object has no attribute '__getattr__' in kivymd

我寫了一個有兩頁的獼猴桃應用程序。 第一頁只包含一個按鈕到下一頁 go。 第二頁是圖標和標題列表。 當應用程序有一個頁面時,它運行良好,但是將第一頁添加為菜單時出現錯誤。 我該如何解決? 錯誤是針對我指定的第 51 行。 錯誤: 'super' object has no attribute '__getattr__'

from kivy.lang import Builder
import glob
from kivymd.app import MDApp
from kivymd.uix.list.list import  TwoLineAvatarListItem
from kivymd.uix.list.list import ImageLeftWidget
from kivy.uix.screenmanager import ScreenManager, Screen

KV = '''
ScreenManager:
    MenuScreen:
    CoinScreen:
<MenuScreen>:
    name:"menu"
    MDRoundFlatButton:
        text: "SelectCoin"
        pos_hint: {"center_x": .2, "center_y": .8}
        on_press: root.manager.current = 'select_coin'

<CoinScreen>:
    name:"select_coin"
    ScrollView:
        MDList:
            id: text_container
            
'''
class MenuScreen(Screen):
    pass


class CoinScreen(Screen):
    pass

sm = ScreenManager()
sm.add_widget(MenuScreen(name='main'))
sm.add_widget(CoinScreen(name='select_coin'))


class Test(MDApp):
    def build(self):
        return Builder.load_string(KV)

    def on_start(self):
        icon_path = glob.glob("icon/*.png")
        for _ in range(len(icon_path)):
            icon_path[_]=icon_path[_].replace("\\","//")
        
        for i in icon_path:
            icons = ImageLeftWidget(source=i)
            items = TwoLineAvatarListItem(text=i + ' item',secondary_text= "Secondary text here")
            items.add_widget(icons)
            self.root.ids.text_container.add_widget(items) #**********error**********


Test().run()

您正在嘗試訪問App中的text_container id,但該 id 位於CoinScreen中,而不是App中。 您可以調整on_start()方法以訪問CoinScreen ,如下所示:

class Test(MDApp):
    def build(self):
        return Builder.load_string(KV)

    def on_start(self):
        icon_path = glob.glob("icon/*.png")
        for _ in range(len(icon_path)):
            icon_path[_] = icon_path[_].replace("\\", "//")

        coin_screen = MDApp.get_running_app().root.get_screen('select_coin')
        for i in icon_path:
            icons = ImageLeftWidget(source=i)
            items = TwoLineAvatarListItem(text=i + ' item', secondary_text="Secondary text here")
            items.add_widget(icons)
            coin_screen.ids.text_container.add_widget(items)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM