小编R. *_*ell的帖子

Kivy:从任何小部件访问配置值

我正在使用 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)

python kivy

7
推荐指数
1
解决办法
2707
查看次数

标签 统计

kivy ×1

python ×1