I get this error when I try to change the values in the Screen window from the Popup window
That is code:
test.py file:
import kivy
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
from kivy.uix.popup import Popup
class ScreenOne(Screen):
pass
class MyPopup(Popup):
def channge(self):
Manager().get_screen("ScreenOne").lb.text = "this text" # this one don't to work
class Manager(ScreenManager):
pass
kv = Builder.load_file("test.kv")
class appApp(App):
def build(self):
return kv
if __name__ == "__main__":
appApp().run()
test.kv file:
#:import Factory kivy.factory.Factory
Manager:
ScreenOne:
<ScreenOne>:
name: "ScreenOne"
GridLayout:
cols: 1
Label:
id: lb
text: "Text"
Button:
text: "go to popup"
on_press: Factory.MyPopup().open()
<MyPopup>:
name: "MyPopup"
size_hint: .4,.8
GridLayout:
oriental: "vertical"
cols: 2
Button:
text: "chance text in Screen"
on_press: root.channge()
I tried to use this command;
Manager().get_screen("ScreenOne").ids.lb.text = "this text"
and
ScreenOne.ids.lb.text = "this text".
neither of which worked.
I don't know what else to try
I played around with it for a bit and this works for me:
import kivy
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
from kivy.uix.popup import Popup
class ScreenOne(Screen):
pass
class MyPopup(Popup):
pass
class Manager(ScreenManager):
def channge(self):
self.get_screen("ScreenOne").ids.lb.text = "this text"
kv = Builder.load_file("test.kv")
class appApp(App):
def build(self):
return kv
if __name__ == "__main__":
appApp().run()
And the kv file:
#:import Factory kivy.factory.Factory
Manager:
ScreenOne:
<ScreenOne>:
name: "ScreenOne"
GridLayout:
cols: 1
Label:
id: lb
text: "Text"
Button:
text: "go to popup"
on_press: Factory.MyPopup().open()
<MyPopup>:
name: "MyPopup"
size_hint: .4,.8
GridLayout:
oriental: "vertical"
cols: 2
Button:
text: "chance text in Screen"
on_press: app.root.channge()