需要帮助理解 kivy 中的 size_hint
Need help understanding size_hint in kivy
我想知道我是否得到了关于 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_hint
和 size
是不兼容的,当您为相同的属性设置它们时,就像为两者设置 x 或 y 一样。使用一个或另一个。如果你考虑一下,这是有道理的。使用 size
,您明确设置了小部件的大小,使用 size_hint
,您还明确设置了小部件的大小,只是以不同的方式,即相对于小部件父级。因此,如果您将两者用于相同的属性 x 或 y,它们必然会发生冲突。
这里的例外情况可能是当您将 size_hint_y
设置为 None 时,就像您在上面所做的那样,然后为 y 指定 size
。或者,如果您将 size_hint_x
设置为 None,并且只为 x.
指定了一个 size
但是,上面你已经设置了 x 的 size
,并且在所有情况下都设置了 x 的 size_hint
。
所以:
这些应该没问题
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
我想知道我是否得到了关于 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_hint
和 size
是不兼容的,当您为相同的属性设置它们时,就像为两者设置 x 或 y 一样。使用一个或另一个。如果你考虑一下,这是有道理的。使用 size
,您明确设置了小部件的大小,使用 size_hint
,您还明确设置了小部件的大小,只是以不同的方式,即相对于小部件父级。因此,如果您将两者用于相同的属性 x 或 y,它们必然会发生冲突。
这里的例外情况可能是当您将 size_hint_y
设置为 None 时,就像您在上面所做的那样,然后为 y 指定 size
。或者,如果您将 size_hint_x
设置为 None,并且只为 x.
size
但是,上面你已经设置了 x 的 size
,并且在所有情况下都设置了 x 的 size_hint
。
所以: 这些应该没问题
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