#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. Спасибо, но можете ли вы написать правильный код, потому что я не понял, плз