Выдает ошибку "TypeError: object.__init__() takes exactly one argument (the instance to initialize)" когда хочу задать ID для каждой кнопки

Рейтинг: 0Ответов: 0Опубликовано: 14.02.2023

Хочу для каждой новой кнопки изменять динамически айди, но выдают такую ошибку:

      29:                on_parent: for i in range(root.len_files): self.add_widget(Button(text = root.list_files[i], size_hint_y=None, height=200, on_press=lambda x:root.direct(), id=str(i)))
      30:        
      31:
 ...
 TypeError: object.__init__() takes exactly one argument (the instance to initialize)

        on_parent: for i in range(root.len_files): self.add_widget(Button(text = root.list_files[i], size_hint_y=None, height=200, on_press=lambda x:root.direct(), id=str(i)))

Вот минимальный пример: .py

    import kivy
    import os
    import os.path as path
    
    from kivy.app import App
    from kivy.lang import Builder
    
    from kivy.uix.screenmanager import ScreenManager, Screen
    from kivy.uix.widget import Widget
    from kivy.uix.scrollview import ScrollView
    from kivy.properties import StringProperty
    from kivy.uix.button import Button
    
    Builder.load_file("stackoverflow.kv")
    
    
    
    class Main(Screen):
        ex="p"
        pus=StringProperty(ex)
        def direct(self):
            self.pus="b"
        
        
    sm=ScreenManager()
    sm.add_widget(Main(name="main"))
    
    class SaveApp(App): 
        def build(self):        
            return sm
    
    
    if __name__ == "__main__":
        SaveApp().run()

.kv

    #:import Button kivy.uix.button.Button
    <Main>:
        
        BoxLayout:     
            orientation: "vertical"
            
            BoxLayout:            
                orientation: "horizontal"
                size_hint_y: .1
                
                Button:
                    size_hint_x: .25
                    text:"5"
                    on_press: root.direct()
                    
                Label:
                    text: root.pus
            
            ScrollView:
                id: "scroll"
                do_scroll_x: False
                do_scroll_y: True
    
                GridLayout:
                    
                    cols: 1
                    size_hint_y:None
                    height: self.minimum_height
                    on_parent: for i in range(5): self.add_widget(Button(text = str(i), size_hint_y=None, height=200, on_press=lambda x:root.direct(), id = str(i)))

Ответы

Ответов пока нет.