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
: