【发布时间】:2016-12-20 11:12:34
【问题描述】:
我对 Kivy 完全陌生,想要将屏幕管理器从一个屏幕转换到另一个屏幕。我不知道如何在按钮的 on_press 方法中访问屏幕管理器的属性。
到目前为止,这是我的代码:
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.uix.button import Button
from kivy.uix.label import Label
class ScreenButton(Button):
def __init__(self):
super(Button, self).__init__()
self.text = "Press Me!"
def on_press(self, *args):
sm.current = 'secondscreen'
class MainApp(App):
def build(self):
sm = ScreenManager()
sm.transition = FadeTransition()
sc1 = Screen(name='firstscreen')
sc1.add_widget(ScreenButton())
sc2 = Screen(name='secondscreen')
sc2.add_widget(Label(text='Another screen!'))
sm.add_widget(sc1)
sm.add_widget(sc2)
return sm
MainApp().run()
我了解,此代码不起作用,因为 sm 未在按钮的方法中定义。但是,例如,如何访问按钮的类定义中的特定小部件?或者有没有更优雅的方式来设置小部件之间的通信以通过彼此改变它们的条件?
感谢您的帮助。
【问题讨论】: