Reputation: 449
I'm trying to reset the values of sliders back to 3. I have two sliders with the values 1 - 5, and a step of 1.
I initially set the value to 3. I want to be able to use my sliders, go to the home screen, then set them back to 3. The sliders need to be re-usable after the reset, which is the current problem that I'm stuck on.
Every time that I hit the reset button, the sliders go back to 3, but cannot be moved again... Does anyone have any insight?
Simple code example:
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()
Upvotes: 0
Views: 453
Reputation: 2231
First of all, you don't need these assignments
class Screen1(Screen):
slider1 = Slider
class Screen2(Screen):
slider2 = Slider
because you assign new sliders to the slider variables.
To access the slider values you have to use ids like this:
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
That's all...
Upvotes: 1