Когда Kivy анализирует файл kv, slider_id5 еще не определен, когда на него ссылаются в slider_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)
Пример
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()
Выход