7

我想知道我是否得到关于 size_hint 在 Kivy 中如何工作的解释。据我了解,它是从小部件到其父布局的相对比例。我尝试了以下代码:

    class TestFrame(GridLayout):
        def __init__(self, **kwargs):
            GridLayout.__init__(self, **kwargs)
            self.rows = 1
            self.add_widget(Label(text='test_num', size=(100, 25), size_hint=(.10, None)))
            self.add_widget(Label(text='test_txt', size=(100, 25), size_hint=(.75, None)))
            self.add_widget(Button(text='test_btn', size=(100, 25), size_hint=(.15, None)))

这是我所期望的:

    |----------------------------------------------------------------------|
    |Test_num :                       Test_txt                :  Test_btn  |

相反,这是结果:

    |----------------------------------------------------------------------|
    |                                    Test_num :  Test_txt   : Test_btn |

我玩过 size_hint 和 size 的不同组合,最终得到非常相似的结果。我错过了什么或不理解什么?

4

1 回答 1

5

据我所知,当您将它们设置为相同的属性时,使用size_hintANDsize是不兼容的,就像为两者设置 x 或 y 一样。使用其中一种。如果你仔细想想,这是有道理的。使用size,您正在显式设置小部件的大小,并且使用size_hint,您还可以显式设置小部件的大小,只是以不同的方式,相对于小部件父级。因此,如果您将两者用于相同的属性 x 或 y,它们必然会发生冲突。

例如,这里的例外情况可能是size_hint_y设置为 None,就像你在上面所做的那样,然后size为 y 指定 a。或者,如果您设置size_hint_x为无,并且只为 x 指定了 a size

但是,在上面您已经设置了sizex 和size_hint所有实例中的 x。

所以:这些应该没问题

size_hint=(None, .5), width=100
size_hint=(.5, None), height=100

这些会冲突

size_hint=(.6, .5), size=(34, 66)
size_hint=(None, 55), height=80
于 2015-10-20T11:52:51.293 回答