Reputation: 13
I am new to programming with Kivy, I'm trying to develop a program that collects the number of people in a room.
And my difficulty is to pass values between KV file and the main. I need to get the value of the slider which is in KV file and use it in main.py program
How could it? already I tried several ways that were posted on different topics here on the site but could not. Perhaps because as I have no knowledge in the area did not know apply it right.
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import NumericProperty, ObjectProperty
from kivy.lang import Builder
class ThemeBackground(Screen):
pass
class myApp(App):
def build(self):
root = ScreenManager()
root.add_widget(ThemeBackground(name='Screen'))
return root
if __name__ == '__main__':
myApp().run()
And Kv file
#:import random random.random
<ThemeBackground>:
orientation: 'vertical'
canvas:
Color:
rgb: 1, 1, 1
Rectangle:
source: 'data/images/background.jpg'
size: self.size
BoxLayout:
padding: 10
spacing: 10
size_hint: 1, None
pos_hint: {'top': 1}
height: 44
Image:
size_hint: None, None
size: 24, 24
source: 'data/logo/kivy-icon-24.png'
Label:
height: 24
text_size: self.size
color: (1, 1, 1, .8)
text: 'Kivy 1.9.0.'
valign: 'middle'
GridLayout:
cols: 2
Label:
text: 'Please enter \nthe number of occupants?'
bold: True
font_name: 'data/fonts/DejaVuSans.ttf'
font_size: 22
halign: 'center'
Slider:
id: slider
min: 0.0
max: 15.0
value: 1.0
step: 1.0
orientation: "horizontal"
width: "38dp"
Label
text: ''
Label
text: '{}'.format(slider.value)
halign: 'center'
valign: 'top'
bold: True
text_size: self.size
font_size: 18
Button:
text: 'Enter'
size_hint_y: None
height: '50sp'}
Upvotes: 0
Views: 1894
Reputation: 12097
You should load the kv
file in the build
of your myApp
:
class myApp(App):
def build(self):
self.load_kv("main.kv")
return ThemeBackground()
You have unneeded }
in the bottom of kv
file,the last character, remove it.
height: '50sp'}
Preview:
In order to access the values of the slider, add a variable myslider
to both of python and kv files like this:
kv:
<ThemeBackground>:
orientation: 'vertical'
myslider: slider
python:
class ThemeBackground(Screen):
myslider = ObjectProperty(None)
Now you can access the value , min or max by:
class myApp(App):
def build(self):
self.load_kv("kivy.3.kv")
tb = ThemeBackground()
print "value =",tb.myslider.value # <---- value here
print "min =",tb.myslider.min # <--- min here
return tb
Upvotes: 1