python - 有没有办法在 kv 文件中指定 Kivy 不在启动时呈现小部件?
问题描述
我最近发现我可以在 Kivy 中删除和添加小部件,而无需通过简单地引用它们的 id 来创建新的小部件,例如:
self.remove_widget(self.ids['my_button']) # Removes the widget
self.add_widget(self.ids['my_button']) # Adds the previously removed widget
这非常适合我的程序,因为我经常需要添加和删除相同的按钮。
但是,Kivy 会渲染我在随附的 kv 文件中编写的所有内容,并且我只希望某些按钮出现在某些预设实例中。我想知道是否有一种方法可以在 kv 文件中指定 kivy 在启动时不渲染小部件,而是等待指令这样做。
我认为上述方法比不断创建和销毁新按钮更快,并且比将按钮存储为ObjectProperty
.
提前致谢!
解决方案
如果它的父级是 FloatLayout
或,您可以通过在其规则RelativeLayout
中添加以下行来隐藏 Widget:kv
size_hint: 0, 0
pos: -1, -1
opacity: 0
opacity
设置为零使其不可见,并使其size_hint
无法pos
响应触摸事件。所以小部件实际上是渲染的,但不透明度为零,大小为零。
请注意,仅设置size
为零不会使所有小部件不可见。A Label
orButton
仍将绘制其text
.
现在您可以删除小部件。如果您希望它显示,您需要调整opacity
、size_hint
和pos
。
推荐阅读
- javascript - java - 如何在java脚本中仅使用am和pm获取小时数
- php - 使用 xPath 选择特定标签的所有子代
- c# - .net 核心中hangfire RecurringJob 的入口点
- javascript - 如何通过 JavaScript 动态隐藏第一个“N”个 DT 和 DD 标签?
- ios - 如何在 iOS swift 3 中创建单独的文件夹
- protractor - 如何在 Firefox 和 IE 浏览器的量角器脚本中处理文件下载对话框
- node.js - 未找到模块:无法从 Material-Ui 解析“@babel/runtime/helpers/builtin/classCallCheck”
- python - Updating a database row using form in Django
- regex - powershell 正则表达式文件名匹配
- css - 应用于表格单元格时,css样式不起作用