想弄清楚kivy中的setter绑定是如何工作的。我发现API中的文档非常糟糕。他们有很多期待,有吨的假设知识围绕他们的kivy引擎。在
不管怎样,大声说。这是我的密码。在
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'
我的想法是,当我按下类screen1中的按钮,它改变了屏幕,它应该改变屏幕2中的标签。我认为最好的方法是使用属性,然后将标签绑定到StringProperty中的更改。我可以很好地改变故事中的字符串,如果我添加一个打印指令,我可以看到它的变化。只是更新了我有问题的标签。在
我好像不能让它工作。我们将非常感谢您的帮助和指导。在
请注意,仅使用
kv
语言可以(几乎)完全实现所需的行为:myapp.py
:和
^{pr2}$my.kv
:但是,如果要使用
^{3}$Label
的setter,请更改MyApp
类定义:并确保
Label
的text
是静态的:text: 'start ...'
。在相关问题 更多 >
编程相关推荐