python - 如何访问不同滑块小部件的 id?
问题描述
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 文件时,当在 slider_id4 中引用它时,slider_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)
例子
测试.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
主文件
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()
输出
推荐阅读
- c - 如何让我的程序读入 value=judges
- ios - PhotoLibrary 访问 .notDetermined,当拒绝时启用
- ruby-on-rails - LoadError:无法在 Rails 中自动加载常量
- angular - 行为主题 Sidenav 切换 Angular 7 材质
- javascript - Angularjs如何获取一周中的所有日期和日期
- django - 尝试使用关系创建 django 模型类的嵌套视图
- python - 如何使用 python subprocess.run() 转到/访问主目录
- mysql - 将日期传输到数据库
- cakephp - 上传文件后我无法查看我的网站
- java - 带有动态数据的 android 中的粘性或固定分段列表视图