【问题标题】:Python 3 Classes, using kivy modulePython 3 类,使用 kivy 模块
【发布时间】:2020-10-12 16:38:44
【问题描述】:

我没有太多的课程经验,但我需要使用它创建一个项目,所以我不得不这样做。问题是我迷失了'self',因为在'AddToDo'函数中我想从'init'函数追加到列表中,但它说'Button'对象没有属性'to_dos '。那么我怎样才能在列表'to_dos'中追加?我还需要注意,这段代码真的很简单。

    class ToDoList(FloatLayout):
    
        def __init__(self,**kwargs):
            super(ToDoList,self).__init__(**kwargs)

            with open('todolist_demo.json','r') as f:
                    data = json.load(f)
                self.to_dos = data

            to_do_but = Button()
            to_do_but.bind(on_press=ToDoList.CreateToDo)  
            self.add_widget(to_do_but)

        def CreateToDo(self):
            but = Button()

            def AddToDo(self):

                self.to_dos.append(9)

            but.bind(on_press=AddToDo)
            self.add_widget(but)

【问题讨论】:

  • 您的 AtddToDo 看起来不错,但您确实有一个问题,on_press=ToDoList.CreateToDo 应该是 on_press=self.CeateToDo

标签: python-3.x class kivy


【解决方案1】:

我将它包含在我自己的项目中,它对我有用,但找不到 AddToDo 函数,所以我把它拉了出来,代码如下:

    class ToDoList(FloatLayout):
    
        def __init__(self,**kwargs):
            super(ToDoList,self).__init__(**kwargs)

            f = open('todolist_demo.json','r')
            data = json.load(f)

            self.to_dos = data

            to_do_but = Button()
            to_do_but.bind(on_press=ToDoList.CreateToDo)  
            self.add_widget(to_do_but)

        def AddToDo(self):
            self.to_dos.append(9)

        def CreateToDo(self):
            but = Button()
            but.bind(on_press=AddToDo)
            self.add_widget(but)

如果它不适合你,我必须要求你放弃你的完整代码。

【讨论】:

    猜你喜欢
    • 2020-05-08
    • 2012-06-20
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多