我在python中有一个脚本,有一个带有不同屏幕的kivy文件。在屏幕1中,我在TextInput
中引入了一些信息,当我切换到下面的屏幕(屏幕2)时,我想恢复我在屏幕1的TextInput
中引入的变量的值。我有问题更新屏幕2的功能__init__
中的值。
我不知道哪种方法是自动更新值的最佳方式。
class PantallaDos(Screen):
def __init__(self, *args):
super(PantallaDos, self).__init__(**kwargs)
softinput_mode = 'below_target'
Window.softinput_mode = softinput_mode
self.ids['pol'].text = 'verdadero'
Kivy kv.file
<PantallaDos>:
BoxLayout:
orientation: 'vertical'
padding: 10
spacing: 3
canvas:
Color:
rgb: 0.15,0.14,0.14
Rectangle:
pos: self.pos
size: self.size
....
SLabel:
id: pol
size_hint: None, None
size: root.width, 30
答案 0 :(得分:0)
您可以将共享数据保存在ScreenManager类或App类中。例如 或者直接在kv中访问它 下面是一个示例,您只需使用text输入的id(以kv为单位)在另一个屏幕中设置标签文本。
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
Builder.load_string("""
<Manager>:
Screen:
name: 'first'
BoxLayout:
TextInput:
id: ti
text: 'type something'
Button:
text:'go to other'
on_press: app.sm.current = 'other'
Screen:
name: 'other'
BoxLayout:
Label:
text: ti.text
Button:
text:'go to first'
on_press: app.sm.current = 'first'
""")
class Manager(ScreenManager):
pass
class ClassApp(App):
def build(self):
self.sm = Manager()
return self.sm
if __name__ == '__main__':
ClassApp().run()