kivy - 如何在 kv 文件中使用相同的小部件
问题描述
我想在 kv 文件中只定义一次小部件(在本例中为微调器)的形式,但在多个屏幕上使用它。从其他屏幕调用不同的输入屏幕(menu1 等),其中许多都有我希望看起来相同的微调器。在这种情况下,我使用的是简单的微调器“color_spin”。
我从另一个窗口打开 menu1,这似乎有效:
<menu1>:
name: "menu1"
GridLayout:
cols:1
Label:
text: "Properties"
size_hint: 0.6,0.2
pos_hint: {"x":0.2,"top":1}
Spinner:
id: color
size_hint_max_y: 50
text: 'Color'
values: 'White','Purple','Blue','Green','Yellow','Orange','Red','Black','Grey'
# Callback
on_text: [do my thing]
但我只想从许多不同的菜单中调用 1 个“color_spin”,所以我想做这样的事情:
<menu1>:
name: "menu1"
GridLayout:
cols:1
Label:
text: "Properties"
size_hint: 0.6,0.2
pos_hint: {"x":0.2,"top":1}
Spinner:
[use spinner "color_spin", but how?]
<color_spin>:
Spinner:
id: color
size_hint_max_y: 50
text: 'Color'
values: 'White','Purple','Blue','Green','Yellow','Orange','Red','Black','Grey'
# Callback
on_text: [do my thing]
我对 kivy 很陌生,所以我很感激你能提供的任何意见。
解决方案
首先创建您的ColorSpinner
:
<ColorSpinner@Spinner>:
size_hint_max_y: 50
text: 'Color'
values: 'White','Purple','Blue','Green','Yellow','Orange','Red','Black','Grey'
然后将其添加到您喜欢的任何位置:
<menu1>:
name: "menu1"
GridLayout:
cols:1
Label:
text: "Properties"
size_hint: 0.6,0.2
pos_hint: {"x":0.2,"top":1}
ColorSpinner:
id: menu1_color
# Callback
on_text: [do my thing]
<color_spin>:
ColorSpinner:
id: color
# Callback
on_text: [do my thing]
推荐阅读
- javascript - Android上的Snapchat浏览器的意图?
- twitter - 从关键字获取推文
- java - 点击展开 TreeView 执行监听器内部的代码
- sendgrid - 在 Sendgrid 中使用事务性电子邮件模板时取消订阅用户
- google-chrome-extension - 我无法停止我的扩展来覆盖 chrome://newtab
- python - 在 Windows 中为 Flask 应用程序导出环境变量
- python - 使用 Python 在 Windows 文件打开对话框(由桌面应用程序启动)中指定文件
- kotlin - RxKotlin "withLatestFrom(...)" 编译错误:没有足够的信息来推断类型变量 R
- javascript - 在 IE 11 中未调用绑定粘贴事件
- celery - Celery + SQS - 使用“queue_name_prefix”写入错误的队列