Изменение значения Kivy Slider с другого экрана - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь сбросить значения ползунков обратно до 3. У меня есть два ползунка со значениями 1 - 5 и шагом 1.

Я изначально установил значение 3. Я хочучтобы иметь возможность использовать мои ползунки, перейдите на начальный экран, а затем установите их на 3. Ползунки необходимо повторно использовать после сброса, что является текущей проблемой, на которой я застрял.

Каждый раз, когда я нажимаю кнопку сброса, ползунки возвращаются к 3, но не могут быть перемещены снова ... У кого-нибудь есть понимание?

Простой пример кода:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.slider import Slider

Builder.load_string('''

<HomeScreen>:
    BoxLayout:
        orientation: "vertical"
        Button:
            text: "Next Screen"
            on_release:
                app.root.current = "screen1"
        Button:
            text: "If I press this, it will turn the values back to 3"
            on_release:
                app.root.get_screen("screen1").slider1.value = 3
                app.root.get_screen("screen2").slider2.value = 3

<Screen1>:
    BoxLayout:
        orientation: "vertical"
        Label:
            text: str(slider1.value)
        Slider:
            id: slider1
            max: 5
            min: 1
            value: 3
            step: 1

        Button:
            text: "Next Screen"
            on_release:
                app.root.current = "screen2"
<Screen2>:
    BoxLayout:
        orientation: "vertical"
        Label:
            text: str(slider2.value)
        Slider:
            id: slider2
            max: 5
            min: 1
            value: 3
            step: 1
        Button:
            text: "Back to Home Screen"
            on_release:
                app.root.current = "homescreen"

<SM>:
    name: "sm"
    id: sm
    HomeScreen:
        name: "homescreen"
        id: hs
    Screen1:
        name: "screen1"
        id: s1
    Screen2:
        name: "screen2"
        id: s2

''')

class HomeScreen(Screen):
    pass

class Screen1(Screen):
    slider1 = Slider

class Screen2(Screen):
    slider2 = Slider

class SM(ScreenManager):
    pass

class MyApp(App):
    def build(self):
        global sm
        sm = SM()
        return sm

if __name__ == "__main__":
    MyApp().run()

1 Ответ

0 голосов
/ 04 октября 2018

Прежде всего, вам не нужны эти назначения

class Screen1(Screen):
    slider1 = Slider

class Screen2(Screen):
    slider2 = Slider

, потому что вы назначаете новые ползунки для переменных ползунка.

Чтобы получить доступ к значениям ползунка, вы должны использовать идентификаторы, такие какэто:

Button:
    text: "If I press this, it will turn the values back to 3"
    on_release:
        app.root.get_screen("screen1").ids.slider1.value = 3
        app.root.get_screen("screen2").ids.slider2.value = 3

Вот и все ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...