Kivy 中的应用程序:获取 kv 文件中的值

Apps in Kivy: get values in kv file

我是 Kivy 编程的新手,我正在尝试开发一个程序来收集房间内的人数。

而我的难点是在KV文件和main之间传递值。我需要获取 KV 文件中滑块的值并在 main.py 程序

中使用它

怎么可能?我已经尝试了几种在网站上不同主题上发布的方法,但没有成功。也许是因为我对该领域一无所知,不知道如何正确应用它。

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()

和Kv文件

#: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'}

您应该在 myAppbuild 中加载 kv 文件:

class myApp(App):
    def build(self):
        self.load_kv("main.kv")
        return ThemeBackground()

你在 kv 文件的底部有不需要的 },最后一个字符,删除它。

     height: '50sp'}

预览:


为了访问滑块的值,将变量 myslider 添加到 python 和 kv 文件,如下所示:

kv:

<ThemeBackground>:
    orientation: 'vertical'
    myslider: slider

python:

class ThemeBackground(Screen):
    myslider = ObjectProperty(None)

现在您可以通过以下方式访问值、最小值或最大值:

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