2014-11-03 3 views
3

Kivy를 사용하여 배경 이미지를 표시하려고하므로 루트 위젯을 이미지와 동일한 크기로 만듭니다. 현재 kv 파일에서 이미지를로드하면 왼쪽 아래 모서리에 작은 축소판으로 나타납니다. 응용 프로그램 창이 올바른 (실제 크기) 크기에 대한 것으로 보이지만 알기는 어렵습니다. 아래의 코드, 어떤 생각?이미지 크기가 Kivy에서 잘못되었습니다

.kv 파일 :

#:kivy 1.8.0 

<BarBot_splash>: 
    BoxLayout: 
     size: image.size 

     Image: 
      id: image 
      source: 'MainMenu.png' 

평 파일 : 그것의 아이들에게 어떤 위치 나 크기를 적용하지 않도록

import kivy 
kivy.require('1.8.0') 

from kivy.app import App 
from kivy.uix.widget import Widget 

class BarBot_splash(Widget): 
    def on_touch_up(self, touch): 
     if touch.x < self.width/3: 
      #we touched the menu button 
      pass 
     elif touch.x > self.width/3*2: 
      #we touched the custom button 
      pass 
     else: 
      return False 

class BarBot(App): 
    def build(self): 
     return BarBot_splash() 

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

답변

1

:

from kivy.app import App 
from kivy.uix.boxlayout import BoxLayout 

class BarBot_splash(BoxLayout): # subclass BoxLayout.. now it's inherently a Boxlayout 

KV : 트릭을 할해야

#:kivy 1.8.0 

<BarBot_splash>: # I'm a BoxLayout... 
    Image: 
     id: image 
     source: 'MainMenu.png' 

. BoxLayout이 창을 차지해야합니다. 하나의 자식 인 Image은 차례대로 BoxLayout의 전체 크기를 차지합니다. 왜? 글쎄, 내가 틀렸다면 누군가는 나를 바로 잡는다.하지만 나는 size_hintBoxLayoutImage의 속성이 기본값 인 (1, 1)으로 기본 설정되어 있다고 생각한다. "부모님이 할 수있는 한 많은 공간을 차지하라"또는 (100 % 너비, 100 % 높이). 부모가 다른 부모의 자녀가있는 경우 부모가있는 지역을 모두 차지하지 못하는 경우도 있습니다. 예를 들어, BoxLayoutImage이 있거나 앱에 BoxLayout이 두 개 이상있는 경우입니다. size_hint를 (.5, .3)으로 설정하면 부모/컨테이너의 사용량 (너비 50 %, 높이 30 %) 또는 사용 가능한 공간을 차지합니다.

2

BarBot_splash, 그냥 위젯입니다, 그러므로이 BoxLayout (따라서 자식 이미지)의 기본 위치는 (0, 0)이고 크기는 (100, 100)입니다.

BarBot_splash를 BoxLayout 또는 다른 크기 조정 레이아웃으로 변경하면 올바르게 전파됩니다. size: image.size 행이 필요 없으며 아무런 효과가 없습니다. main.py에서

관련 문제