【发布时间】:2013-12-07 02:48:14
【问题描述】:
我已阅读有关如何在 Kivy 中更改背景、添加颜色等的问题,并且我熟悉如何为小部件执行此操作。
我的问题是一种通用策略,即当我想要的只是一个我要放置其他小部件的背景时,打算使用哪种对象——应该是标签还是小部件,还是布局? (假设我只有一个小的填充背景,我会在上面放置不同颜色的网格布局,如this question。)
【问题讨论】:
我已阅读有关如何在 Kivy 中更改背景、添加颜色等的问题,并且我熟悉如何为小部件执行此操作。
我的问题是一种通用策略,即当我想要的只是一个我要放置其他小部件的背景时,打算使用哪种对象——应该是标签还是小部件,还是布局? (假设我只有一个小的填充背景,我会在上面放置不同颜色的网格布局,如this question。)
【问题讨论】:
我认为答案确实是“视情况而定”。正如您所说,您可以为任何东西添加背景,因此决定完全取决于您希望小部件具有什么样的其他行为。
我想要的只是一个背景,我将把其他小部件放在上面——应该是标签、小部件还是布局?
如果您完全不希望有额外的行为,Widget 就可以了。如果您想要简单的行为,例如让孩子自动放置/调整大小以填充背景小部件,那么像BoxLayout 这样的简单布局当然是理想的。或者,您可能希望(例如)将子项设置为比背景小部件小一点,以便获得一点边框,在这种情况下,AnchorLayout 将是正确的。或者对于任意比例行为,FloatLayout 是理想的。
当然你可以在那里看到,问题真的归结为“你想要布局行为”,如果是这样,你只需选择满足你想要的布局。绝对没有限制和规则,在kivy的设计中,你可以结合这样的行为来精确地得到你想要的。
(假设我只会有一个小的填充背景,我会在上面放置不同颜色的网格布局,就像在这个问题中一样。)
在这种情况下,AnchorLayout 似乎很理想。这使您可以为子小部件设置填充,但(默认情况下)它是居中的,因此如果您使用背景创建自己的 AnchorLayout 子类,您将获得您想要的边框。
【讨论】: