2017-07-14 10 views
1

私は私のテストUIのラベルやボタンを揃えるためにしようとしています、これは私のKVファイルですkivyでpos_hintをFloatLayoutで使用するには?

<test>: 

    Label:   
     text: "foo" 
     color: 0,1,0,1 
     #pos:120,20 
     pos_hint:{"right":0.1,"top":1} 
    Label: 
     text:"boo" 
     color: 0,0,1,1 
     #pos:80,20 
     pos_hint:{"right":0.1,"top":0.5} 

    Label: 
     text:"bar" 
     color: 1,0,0,1 
     #pos:20,120 
     pos_hint:{"right":0.1,"top":0.1} 
    Button: 
     text:"goo" 
     size_hint:0.1,0.1 

私はpos_hintそれを使用したとき、私は正常にPOSを使用してラベルfooの、ブーイングやバーを作成することができていますが、空白の出力を返しますか?

答えて

3

ラベルのテキストが画面外で(ラベル自体が透明なため)、「空白」という出力が表示されています。あなたのレイアウト以来

  1. <test>ので、それはそれ( 800 x 600です)Windowの大きさになり(1,1)の デフォルトにかかる一切size_hintを持っていません。
  2. ラベルにはsize_hintが含まれていないので、デフォルトでは親のsizeになります。つまり、レイアウトはsize [800, 600]になります。ラベル内のテキストは、デフォルトで中央揃えされ、その背景は透明です。

その後

  • したがって、テキストpos = (0,0)とラベルが画面の中央に表示されます(あなたはサイズの視覚的な表現を持っているので、多分あなたは、最初のボタンでこれを試してみてください)私たちが持っていますpos_hint取っ異なる引数(以下の説明はFloatLayoutの外のもののために正確ではないかもしれません):

    pos_hint:{"right":v1,"top":v2}(self.parent.right*v1 - self.width, self.parent.top*v2 - self.height)posを設定します - あなたは番目のtoprightを設定していますあなたが配置しているウィジェット。したがって、あなたのラベルは、(左下が0,0であるため)、このような負のは、そのテキストが画面に表示されないこと

    を調整し、その後、私たちは(あなたがあなたのケースのために、より便利かもしれません)pos_hint:{"x":v1,"y":v2}を持っている、とpos_hint:{"center_x":v1,"center_y":v2}ます。 posは、左下の座標のみを設定するので、サイズがどのように見えるかに影響することを頭に入れてどのように動作するかを把握することができます。

    #:kivy 1.0.9 
    
    <test>: 
        #size: (500, 500) 
        #size_hint:(None, None) 
        canvas: 
         Color: 
          rgb: 1,0,0 
         Rectangle: 
          size: (5,5) 
          pos: (0,0) 
    
        Widget: 
         id:wig 
         pos: (250,250) 
         canvas: 
          Color: 
           rgb: 1,1,1 
          Rectangle: 
           size: (5,5) 
           pos: self.pos 
    
        Label: 
         id: boo 
         text:"boo" 
         color: 0,0,1,1 
         #size_hint:(1,1) 
         pos_hint:{"center_x":1,"center_y":1} 
    
        Label: 
         id: foo 
         text: "foo" 
         color: 0,1,0,1 
         #size_hint: (.6,.6) 
         pos_hint:{"x":1,"y":1} 
    
        Label: 
         id: bar 
         text:"bar" 
         color: 1,0,0,1 
         #size:(500,500) 
         #size_hint:(None, None) 
         pos_hint:{"right":1,"top":1} 
         #pos:100, 10 
    
    
        Button: 
         text:"goo" 
         size_hint:0.1,0.1 
         pos:(1,1) 
         #some debug info, i know the code is ugly 
         on_press: print self.parent.size,'\n', self.parent.right, self.parent.top, self.parent.x, self.parent.y, self.parent.center_x, self.parent.center_y, "\n","bar_right_top:", bar.pos,"foo_x_y:", foo.pos,"boo_center:", boo.pos, "\nwhite square:", wig.pos, "\n", bar.size, foo.size, boo.size 
    
  • 関連する問題