如何访问不同的滑块小部件的id?

2024-04-26 12:53:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我正在尝试访问具有id: slider_id4的滑块小部件画布中的slider_id5.value,但我收到一个错误消息:

The name, slider_id5 is not defined

我需要访问slider_id4小部件中slider_id5的值(在矩形下)。有什么建议吗?你知道吗


Tags: posidsizevaluergbrootminwidth
1条回答
网友
1楼 · 发布于 2024-04-26 12:53:39

当Kivy解析kv文件时,slider\u id5slider\u id4中引用时尚未定义它。你知道吗

解决方案

检查app.root中的None

替换

25+slider_id5.value,65

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

示例

你知道吗试验电压(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

你知道吗主.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 - Moved Slider4Img02 - Moved Slider5

相关问题 更多 >