簡體   English   中英

屏幕管理器AttributeError:“超級”對象沒有屬性“ __getattr__”

[英]Screen manager AttributeError: 'super' object has no attribute '__getattr__'

我在項目中使用ScreenManager。 當我在Main.py中返回“ Home”類時,它可以正常工作,但是如果返回“ ScreenManager”,它將得到AttributeError。如何修復它。

主程序

from kivy.app import App
from kivy.lang.builder import Builder
from Components.Home.HomeScreen import Home,EachTask
from Components.SM.SM import SM
Builder.load_file("Components/SM/SM.kv")
Builder.load_file("Components/Home/HomeScreen.kv")
class Main(App):
    def build(self):
        return SM()

if  __name__ == "__main__":
    Main().run()

當我返回Home()時有效,但我返回SM則無效

HomeScreen.py

class Home(Screen):


def __init__(self,**kwargs):
    super(Home,self).__init__(**kwargs)
    EachTask.Remove_widget = self.remove_widget
    MyPopup.Remove_widget = self.remove_widget_pop
    EachTask.Do_Popup_Task = self.do_popup_task




    for row in database:


        if (row[3]) == True:
            newListItem = EachTask(rgba=[0, .7, .3, 1],
                                   text= row[0] + "    time:    " + row[1],
                                   id=row[2])
            self.ids.add_field.add_widget(newListItem)

        else:

                newListItem = EachTask(text=row[0] + "    time:    " + row[1],
                                       id=row[2])

                self.ids.add_field.add_widget(newListItem)

錯誤

   self.ids.add_field.add_widget(newListItem)
   File "kivy\properties.pyx", line 863, in 
   kivy.properties.ObservableDict.__getattr__
   AttributeError: 'super' object has no attribute '__getattr__'

如果不查看kv文件和py文件,沒有什么可說的。 但是,只是檢查

self.ids.add_field.add_widget(newListItem)

這行代碼會將newListItem添加到.kv file定義的Layout中。 此布局的id:也需要為add_field

例如(kv文件):

<Home>:
  GridLayout:
     id:add_field
     cols:2

暫無
暫無

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

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