2014-01-18 81 views
0

晚上好所有基本Kivy Q,定位帆布兒童{kivy語言}

只是想知道,如果有人可以共享信息,開始與kivy玩弄,所有我想這樣是有一個基本的畫布組件和位置屏幕頂部的一個矩形,使用co-ord 0,0繪製它作爲底部。

它還提出了一個問題,即我可以通過使用0,400來設置接近頂端的位置,但是如何使它始終位於頂部並且獨立於分辨率。我正在嘗試製作一個小應用程序,作爲學習它的一部分,並重新執行我在Python中學到的知識。

感謝任何洞察

canvas: 
     Rectangle: 
      pos: self.pos 
      size: self.width , self.height/10 

    Label: 
     font_size: 25 
     top: root.top 
     text:"Score" 


    Label: 
     font_size: 25 
     top: root.top 
     text:"4000 points" 

回答

1

在kivy畫布點(0,0)實際上是左下方之一。你可以計算頂部容易自己的位置:

from kivy.app import App 
from kivy.uix.widget import Widget 
from kivy.lang import Builder 
from kivy.properties import ListProperty 

kv_string = ''' 
<MyWidget>: 
    r_size: [root.size[0]/2, root.size[1]/2] 
    canvas: 
     Color: 
      rgb: 0.1, 0.6, 0.3 
     Rectangle: 
      size: root.r_size 
      pos: 0, root.size[1]-root.r_size[1] 
''' 

Builder.load_string(kv_string) 

class MyWidget(Widget): 
    r_size = ListProperty([0, 0]) 

class TestApp(App): 
    def build(self): 
     return MyWidget() 

if __name__ == '__main__': 
    TestApp().run() 

您還可以使用FloatLayout,設置分辨率無關SubWidget的大小和位置使用pos_hintsize_hint屬性,那麼每個這樣的小部件的邊框內畫點什麼:

from kivy.app import App 
from kivy.uix.floatlayout import FloatLayout 
from kivy.lang import Builder 

kv_string = ''' 
<MyWidget>: 
    Widget: 
     pos_hint: {'center_y': 0.5, 'center_x': 0.5} 
     size_hint: 0.2, 0.2 
     canvas: 
      Color: 
       rgb: 0.1, 0.6, 0.3 
      Rectangle: 
       size: self.size 
       pos: self.pos 
    Widget: 
     pos_hint: {'center_y': 0.5, 'center_x': 0.2} 
     size_hint: 0.2, 0.2 
     canvas: 
      Color: 
       rgb: 0.1, 0.6, 0.3 
      Rectangle: 
       size: self.size 
       pos: self.pos 
    Widget: 
     pos_hint: {'center_y': 0.5, 'center_x': 0.8} 
     size_hint: 0.2, 0.2 
     canvas: 
      Color: 
       rgb: 0.1, 0.6, 0.3 
      Rectangle: 
       size: self.size 
       pos: self.pos 
    Widget: 
     pos_hint: {'center_y': 0.2, 'center_x': 0.5} 
     size_hint: 0.2, 0.2 
     canvas: 
      Color: 
       rgb: 0.1, 0.6, 0.3 
      Rectangle: 
       size: self.size 
       pos: self.pos 
    Widget: 
     pos_hint: {'center_y': 0.8, 'center_x': 0.5} 
     size_hint: 0.2, 0.2 
     canvas: 
      Color: 
       rgb: 0.1, 0.6, 0.3 
      Rectangle: 
       size: self.size 
       pos: self.pos 
''' 

Builder.load_string(kv_string) 

class MyWidget(FloatLayout): 
    pass 

class TestApp(App): 
    def build(self): 
     return MyWidget() 

if __name__ == '__main__': 
    TestApp().run() 
+0

感謝那 :) – whatsthatsay