2014-01-18 3 views
0

Доброго вечер ВсехBasic Kivy Q, позиционирование Canvas Детского {языка kivy}

Просто интересно, если кто-то может поделиться информацией, начали играть с kivy, все, что я пытаюсь так есть основной холст виджет и положение прямоугольник в верхней части экрана, используя координату 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, установить разрешение независимых размеры подвиджета и позицию, используя pos_hint и size_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

Смежные вопросы