Нужна помощь в понимании size_hint в киви
Мне было интересно, могу ли я получить объяснение того, как 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 ответ
Насколько я знаю, использование size_hint
А ТАКЖЕ size
несовместимы, когда вы устанавливаете их для одного и того же атрибута, как при установке x или y для обоих. Используйте один или другой. Если вы думаете об этом, это имеет смысл. С size
, вы явно устанавливаете размер для виджета, и с size_hint
Вы также явно устанавливаете размер для виджета, просто по-другому, по сравнению с родительским виджетом. Так что, если вы используете оба для одного и того же атрибута, x или y, они будут конфликтовать.
Исключения здесь, вероятно, когда у вас есть, например, size_hint_y
установите None, как вы делаете выше, а затем укажите size
для тебя. Или если вы установите size_hint_x
Нет, а только указан size
для х.
Тем не менее, выше вы установили size
х, а 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