- Kivy Cookbook
- Hugo Solis
- 350字
- 2021-07-16 20:39:55
Referencing widgets
Sometimes, it is necessary to access or reference other widgets in a specific widget tree. In the Kv language, there is a way to do it using IDs.
Getting ready
This recipe will use two common widgets just for reference. The Button
and TextInput
fields are very common widgets.
How to do it…
This recipe is as follows:
- Make a rule
- Establish the ID
- Call the ID:
<MyWidget>: Button: id: f_but TextInput: text: f_but.state
How it works…
Let's see the code; this is the first line:
<MyWidget>:
This is the name of the widget we will use, which is a clickable text input. The second line is:
Button:
This defines the button. The third line is:
id: f_but
This gives the button an ID of f_but
, which we will use to reference the button. The fourth line is:
TextInput:
This defines the text input. The fifth line is:
text: f_but.state
This is the definition of the text that is in the text input where we are referencing the state of the button. It says that if you do not click the button, the text in the text input is normal, and if you click the button, the text in the text input is shown.
There's more…
An ID is limited in scope to the rule it is declared in, so in the preceding code, f_but
cannot be accessed outside the <MyWidget>
rule; that is, if we have a second <MyWidget2>,
we are not able to reference f_but
in <MyWidget2>
.
Also ID is a weakref
module for the widget and not the widget itself. As a consequence, storing the ID is not sufficient to keep the widget from being garbage collected. To demonstrate:
<MyWidget>: label_widget: label_widget.__self__ Button: text: 'Add Button' on_press: root.add_widget(label_widget) Button: text: 'Remove Button' on_press: root.remove_widget(label_widget) Label: id: label_widget text: 'widget'
If we do not use ID.__self__
or in this case label_widget.__self__ just label_widget
, we are going to get an error: ReferenceError: weakly-referenced object no longer exists.
See also
If you want to get more details about widgets, see the recipes in Chapter 4, Widgets.
- 大話PLC(輕松動漫版)
- C++程序設計教程
- NLTK基礎教程:用NLTK和Python庫構建機器學習應用
- Java程序員面試算法寶典
- 新手學Visual C# 2008程序設計
- Web程序設計(第二版)
- Learning Unity 2D Game Development by Example
- 低代碼平臺開發(fā)實踐:基于React
- 汽車人機交互界面整合設計
- Python從入門到精通(第3版)
- Visual FoxPro 6.0程序設計
- 邊玩邊學Scratch3.0少兒趣味編程
- HTML5移動前端開發(fā)基礎與實戰(zhàn)(微課版)
- Scrapy網絡爬蟲實戰(zhàn)
- 實戰(zhàn)Python網絡爬蟲