Ошибка атрибута: ‘kivy.properties.Объект ObjectProperty’ не имеет атрибута ‘add_widget’

#python #android #python-3.x #kivy #kivymd

#python #Android #python-3.x #kivy #kivymd

Вопрос:

Я новичок, и я хотел создать приложение с kivy. Проблема в том, что я не могу добавить виджет с экрана на другой

И эта ошибка для меня AttributeError: ‘kivy.properties.Объект ObjectProperty’не имеет атрибута ‘add_widget’ Я не знаю, в чем проблема, мне нужен кто-нибудь, чтобы помочь мне

Есть часть py

 from kivymd.app import MDApp
from kivy.lang.builder import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivymd.uix.list import MDList,ThreeLineListItem
from kivymd.uix.button import MDFlatButton,MDRectangleFlatButton
from kivymd.uix.dialog import MDDialog
from kivy.properties import ObjectProperty

class MenuScreen(Screen):
    list11=ObjectProperty(None)
    
class ProfileScreen(Screen):
    field1=ObjectProperty(None)
    field2=ObjectProperty(None)
    field3=ObjectProperty(None)
    def but1(self):
        self.but2=MDRectangleFlatButton(text='remove')
        if self.field1.text=="":
            self.box=MDDialog(title='Your Username  ',text='you need to add Title',size_hint=(0.93,0))
            self.box.open()
        else:
            MenuScreen.list1.add_widget(ThreeLineListItem(text=self.field1,secondary_text=self.field2,tertiary_text=self.field3))



sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(ProfileScreen(name='profile'))

class DemoApp(MDApp):
    def build(self):
        screen = Builder.load_string(screen_helper)
        return screen



DemoApp().run()
  

И это часть kv

 screen_helper = """
ScreenManager:
    MenuScreen:
    ProfileScreen:
<MenuScreen>:
    name: 'menu'
    list1:list1
    BoxLayout:
        orientation: "vertical"
        MDToolbar:
            title: 'To-Dos'
            elevation: 8.6
        
        ScrollView:
            MDList:
                id:list1
        MDBottomAppBar:
            MDToolbar:
                #mode: 'free-end'
                type: 'bottom'
                icon: 'plus'
                on_action_button:
                    root.manager.current = 'profile'
                    root.manager.transition.direction = 'left'

<ProfileScreen>:
    name: 'profile'
    field1:field1
    field2:field2
    field3:field3
    BoxLayout:
        orientation:'vertical'
        padding:200
        spacing:'-50dp'
        MDLabel:
            text:'Add new To-Do:'
            font_size:'25dp'
            pos_hint: { "center_x":0.25}
        Widget:
        MDTextField:
            id:field1
            hint_text: "Title: "
            pos_hint: { "center_y":0.5, "center_x":0.49}
            size_hint_x: None
            width: 1000
            size_hint_y: (None)
        
            helper_text:" Necessary"
            helper_text_mode: 'persistent'
        Widget:
        MDTextField:
            id:field2
            hint_text: "Description"
            pos_hint: { "center_y":0.5, "center_x":0.49}
            size_hint_x: None
            width: 1000
            size_hint_y: (None)
        
            helper_text:" Important but optional"
            helper_text_mode: 'persistent'
        Widget:
        
    
        MDTextField:
            id:field3
            hint_text: "Time"
            pos_hint: { "center_y":0.5, "center_x":0.49}
            size_hint_x: None
            width: 1000
            size_hint_y: (None)
        
            helper_text:" Optional"
            helper_text_mode: 'persistent'
        Widget:
        MDLabel:
            text:''
            font_size:'1dp'
  
  
        
        
        MDRectangleFlatButton:
            text:'Add'
            pos_hint: { "center_x":1.05}
            on_release:
                root.but1()
                root.manager.transition.direction = 'right'
            
                root.manager.current = 'menu'
            
        
        
   

    
  
  
        MDLabel:
            text:''
            font_size:'1dp'
        MDLabel:
            text:''
            font_size:'1dp'
        
        MDLabel:
            text:''
            font_size:'1dp'
"""
  

Это мой первый проект

Спасибо за помощь.

Комментарии:

1. MenuScreen.list1.add_widget <- это ошибка, вы обращаетесь к объекту Property уровня класса. Вам нужно получить доступ к list1 атрибуту экземпляра MenuScreen класса, а не к самому классу.

2. Спасибо, но можете ли вы написать правильный код, потому что я не понял, плз