![](/img/trans.png)
[英]How to access id/widget of different class from a kivy file (.kv)?
[英]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_id5
在slider_id4
(下矩形)小部件。 有什么建议么?
当Kivy解析kv文件时,在lider_id4中引用它时还没有定义lider_id5 。
检查app.root
的None
和
更换
25+slider_id5.value,65
同
(25, 65) if app.root is None else (app.root.ids.slider_id5.value+25,65)
#: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
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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.