首页 > 解决方案 > 有没有办法在 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.

提前致谢!

标签: pythonkivykivy-language

解决方案


如果它的父级是 FloatLayout或,您可以通过在其规则RelativeLayout中添加以下行来隐藏 Widget:kv

    size_hint: 0, 0
    pos: -1, -1
    opacity: 0

opacity设置为零使其不可见,并使其size_hint无法pos响应触摸事件。所以小部件实际上是渲染的,但不透明度为零,大小为零。

请注意,仅设置size为零不会使所有小部件不可见。A LabelorButton仍将绘制其text.

现在您可以删除小部件。如果您希望它显示,您需要调整opacitysize_hintpos


推荐阅读