2015-10-20 228 views
2

我在想知道如果我得到關於size_hint如何在基維工作的解釋。根據我的理解,這是從小部件到其父級佈局的相對比例。我嘗試下面的代碼:需要幫助瞭解kivy中的size_hint

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和大小的不同組合發揮並最終得到非常相似的結果。我錯過了什麼或不理解?

回答

1

據我所知,使用size_hintsize是不兼容的,當你設置它們爲相同的屬性,如在設置x或y兩者。使用一個或另一個。如果你仔細想想,這是有道理的。使用size,您明確設置了窗口小部件的大小,並且與size_hint一樣,您也正在爲窗口小部件顯式設置大小,這與使用窗口小部件父窗口的方式不同。因此,如果您將兩者用於相同的屬性(x或y),它們就會發生衝突。

這裏的例外情況可能是當您將例如size_hint_y設置爲無,如上所述,然後爲y指定size。或者,如果將size_hint_x設置爲無,並且只爲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 
+0

我只是想一遍,並沒有發揮作用。 –

+1

呃,我覺得自己像一個白癡,我有另一個小部件,在我忽略的類的頂部,它不包含size_hint。因爲我沒有在所有人上使用size_hint,所以無法正常工作。 –