繁体   English   中英

如何访问其他滑块小部件的ID?

[英]How to access the id of a different slider widget?

Slider:
id:slider_id4

min: -90
max: 90
value: 0
step: 1
pos: root.width/2+0.3*root.width/2,0.90*root.height
size_hint:0.7,0.05

canvas:
    PushMatrix
    Rotate:

        angle: slider_id4.value
        origin: 30,65
    Color:
        rgb: [.5,1,.5]
    Rectangle:
        pos: 25+slider_id5.value,65
        size: 10,25
    PopMatrix

Slider:
id:slider_id5
min: 0
max: 50
value: 0
step: 1
pos: root.width/2+0.3*root.width/2,0.80*root.height
size_hint:0.7,0.05

canvas:

    Color:
        rgb: [.5,.5,.5]
    Rectangle:
        id:r1
        pos: 0+slider_id5.value,30
        size: 60,20

    Color:
        rgb: [1,.5,.5]
    Ellipse:
        pos: 15+slider_id5.value,35
        angle_start: 270
        angle_end: 450
        size: 30,30

我试图访问slider_id5.value在具有一个滑块控件画布id: slider_id4但我得到一个错误说:

未定义名称slider_id5

我需要访问的值slider_id5slider_id4 (下矩形)小部件。 有什么建议么?

当Kivy解析kv文件时,在lider_id4中引用它时还没有定义lider_id5

检查app.rootNone

更换

25+slider_id5.value,65

(25, 65) if app.root is None else (app.root.ids.slider_id5.value+25,65)

test.kv

#:kivy 1.11.0

<RootWidget>:
    orientation: 'vertical'


    Slider:
        id: slider_id4

        min: -90
        max: 90
        value: 0
        step: 1
        pos: root.width/2+0.3*root.width/2,0.90*root.height
        size_hint:0.7, 0.05

        canvas:
            PushMatrix
            Rotate:
                angle: slider_id4.value
                origin: 30,65
            Color:
                rgb: [.5,1,.5]
            Rectangle:
                pos: (25, 65) if app.root is None else (app.root.ids.slider_id5.value+25,65)
                size: 10,25
            PopMatrix

    Slider:
        id: slider_id5
        min: 0
        max: 50
        value: 0
        step: 1
        pos: root.width/2+0.3*root.width/2,0.80*root.height
        size_hint:0.7,0.05

        canvas:
            Color:
                rgb: [.5,.5,.5]
            Rectangle:
                id:r1
                pos: 0+slider_id5.value,30
                size: 60,20

            Color:
                rgb: [1,.5,.5]
            Ellipse:
                pos: 15+slider_id5.value,35
                angle_start: 270
                angle_end: 450
                size: 30,30

main.py

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout


class RootWidget(BoxLayout):
    pass


class TestApp(App):

    def build(self):
        return RootWidget()


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

产量

Img01-移动的滑块4 Img02-移动的滑块5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM