1
试图弄清楚如何使用setter在kivy中进行绑定。我发现API中的文档非常糟糕。他们非常期待在他们的kivy引擎周围有大量的假设知识。Kivy按功能更新标签
ANYWAY,咆哮过来。这是我的代码。
class ScreenOne(Screen):
story = StringProperty('')
def __init__ (self,**kwargs):
super (ScreenOne, self).__init__(**kwargs)
Buttonlayout = GridLayout(orientation='vertical',cols=1, spacing=2, size_hint_y=None)
Buttonlayout.bind(minimum_height=Buttonlayout.setter('height'))
btn = Button(text="change the text", size_hint_y=None, height=80,text_size=(350,None),font_size='12sp')
btn.bind(on_press=partial(self.changer,"text has changed"))
Buttonlayout.add_widget(btn)
root.add_widget(Buttonlayout)
self.add_widget(root)
def changer(self,*args):
self.story = args[0]
self.manager.current = 'screen2'
class ScreenTwo(Screen):
def __init__(self,**kwargs):
super (ScreenTwo,self).__init__(**kwargs)
my_box1 = BoxLayout(orientation='vertical')
L1 = Label(text=self.screenOne.story,font_size='24dp')
L1.bind(self.L1.setter('text')= story)
my_button1 = Button(text="Go to screen 1",size_hint_y=None, size_y=100)
my_button1.bind(on_press=self.changer)
my_box1.add_widget(self.L1)
my_box1.add_widget(my_button1)
self.add_widget(my_box1)
def changer(self,*args):
self.manager.current = 'screen1'
这个想法是,当我按下类screenOne中的按钮,它改变屏幕它应该改变screenTwo中的标签。我想最好的方法是使用属性,然后将标签绑定到StringProperty中的更改。我可以改变故事中的字符串,如果我向它添加打印指令,我可以看到它发生了变化。它只是更新我遇到的标签。
我似乎无法得到它的工作。帮助和指导将不胜感激。
myapp.py
:
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import StringProperty, ObjectProperty
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.app import App
class ScreenOne(Screen):
story = StringProperty('')
def changer(self,*args):
self.story += args[0]
self.manager.current = 'screen2'
class ScreenTwo(Screen):
pass
class MyApp(App):
pass
if __name__ == '__main__':
MyApp().run()
和my.kv
: