微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Kivy 滑块值

如何解决Kivy 滑块值

我正在尝试引用一个滑块值,但是我不断收到该值不存在的错误。这里的上下文是我在 kv 文件中创建 Slider 的位置

<Manager>:
    id: screen_manager

    Screen:
        name: 'home'
        canvas.after:
            Color:
                rgba: (37/255,150/255,190/255,0.3)
            Rectangle:
                size: self.size
                pos: self.pos
        canvas:
            Rectangle:
                size: self.size
                pos: self.pos
                source: "art/menu.png"
        Button:
            text: 'Play Albreakdo!'
            size_hint: (.3,.15)
            pos: (root.center_x,root.center_y)
            font_size: '15sp'
            on_release: root.current = 'game';game.play()
        Button:
            text: 'Controls'
            size_hint: (.3,root.center_y - self.height * 1.5)
            font_size: '15sp'
            on_release: root.current = 'control'
        Button:
            text: 'About'
            size_hint: (.3,root.center_y - self.height * 3)
            font_size: '15sp'
            on_release: root.current = 'about'
        BoxLayout:
            orientation: 'vertical'
            size_hint: (0.4,0.2)
            Slider:
                id: slider1
                min: 100
                max: 150
                step: 5
                value_track: True
                value_track_color: [0,1,1]

            Label:
                text: "Duration: " + str(slider1.value)

            Slider:
                id: slider2
                min: 5
                max: 15
                step: 1
                value_track: True
                value_track_color: [1,1]

            Label:
                text: "Radiation: " + str(slider2.value)

管理器类本身是空的,它代表我游戏的主菜单

class Manager(ScreenManager):
    """
    screen manager
    """

我需要在名为 Paddle 的类中引用滑块值

class Paddle(Widget):
    """
    Player's avatar. Contains color,timer,and radiation properties
    """

    duration = BrickBreakApp.slider_value
    radiation = 10

我尝试在管理器类中创建一个 ObjectProperty 并通过 id 引用它,但仍然出现错误。知道如何在 Paddle Class 中获取滑块值吗?

这是我的带有管理器实例的根应用程序:

class BrickBreakApp(App):
    """
    main app with build function
    """
    slider_value = App.get_running_app().root.ids.slider1.value

    def build(self):
        """
        builds the app
        """
        music = SoundLoader.load("sound/PatakasWorld.wav")
        music.loop = True
        music.volume = 0.03
        if music:
            music.play()
        return Manager(transition=WipeTransition())

解决方法

由于您的根小部件是 Manager 的实例,因此您可以使用 Manager 访问 App.get_running_app().root 实例。然后您可以使用 ids 访问 Slider

slider_value = App.get_running_app().root.ids.slider2.value

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。