需要帮助理解kivy

时间:2015-10-20 00:10:17

标签: python kivy sizehint

我想知道我是否得到关于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的不同组合,结果非常相似。我缺少什么或不理解?

1 个答案:

答案 0 :(得分:1)

据我所知,使用size_hintsize时,如果为同一属性设置它们,则设置x和y都不兼容。使用其中一个。如果你考虑一下,这是有道理的。使用size,您明确设置窗口小部件的大小,并且使用size_hint,您还明确地设置窗口小部件的大小,只是以不同的方式,相对于小部件父级。因此,如果将两者用于相同的属性x或y,则它们必然会发生冲突。

此处的例外情况可能是您举例,size_hint_y设置为无,就像您上面那样,然后为y指定size。或者,如果您将size_hint_x设置为无,并且仅为x指定了size

但是,上面你已经设置了x的size和所有实例中的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