我正在使用 kivy 创建一个用于计算机辅助学习的小应用程序。
目前我在访问配置值时遇到了一些问题。我得到了价值
self.language = self.config.get('basicsettings', 'language')
在主应用程序类中。这工作正常,但是,我不知道如何在另一个小部件中访问这些值 - 在这种情况下是 AudioButton。
我正在使用包含屏幕的 ScreenManager。里面是一个 BoxLayout,它包含一个 GridLayout,它包含几个 AudioButton。
现在,在这个 AudioButton 中,我想知道self.languagemainApp中定义的当前值。
在 .kv 文件中,我可以做类似的事情
`text: app.language`
Run Code Online (Sandbox Code Playgroud)
得到它,但如何直接在 Python 中做到这一点?
如果我在 kv 中使用虚拟标签来获取值,它可以工作,但是当我更改设置时,我需要重新启动应用程序,因为我不知道on_config_change()在运行时需要添加什么来更新值。
我希望这是我的应用程序的一个非常简化的版本,其中包含所有有趣的部分。
class AudioButton(Button):
filename = StringProperty(None)
sound = ObjectProperty(None, allownone=True)
def on_press(self):
if self.ids.playsound.text == '1':
self.sound.play()
else:
print('NoSound')
class MainScreen(Screen):
pass
class Pictures1(GridLayout):
def __init__(self, **kwargs):
super(Pictures1, self).__init__(**kwargs)
self.cols = 2
btn = AudioButton()
self.add_widget(btn)
btn = AudioButton()
self.add_widget(btn)
class Lesson1(Screen):
pass
class ScreenManagement(ScreenManager): …Run Code Online (Sandbox Code Playgroud)