2017-06-20 7 views
2

私はキャンバスとイメージを持つスタックレイアウトを持っています。私のイメージは.1のsize_hintを持ち、キャンバスは私のイメージと同じ高さにしたい。Kivy-私のキャンバスの高さを親の高さよりも小さくするには

.kvファイル:

StackLayout: 
    orientation: 'lr-tb' 
    canvas: 
     Color: 
      rgba: 1,1,1,1 
     Rectangle: 
      pos: self.pos 
      size: self.size 
    Image:    
     size_hint_y: .1 
     source: 'Images\login\cptbanner.jpg' 
     allow_stretch: True 
     keep_ratio: True 

私は望ましい効果を得るために何ができるのでしょうか?

答えて

2

Kivyキャンバスは、ウィジェットまたはペイントするスペースではありません。これは一連の指示にすぎません。サイズを変更することはできません。私は描かれた矩形のサイズを変更したいと思います。私はあなたが期待するものな結果がわからないんだけど、あなたは親ウィジェットのwidthheight属性を使用して矩形のサイズを変更することができます

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


Builder.load_string(""" 
<MainWindow>: 
    StackLayout: 
     id : aa 
     orientation: 'lr-tb' 

     canvas: 
      Color: 
       rgba: 1,1,1,1 
      Rectangle: 
       pos: 0, self.height*0.9 
       size: self.width, self.height*0.1 

     Image: 
      id: im 
      size_hint_y: 0.1 
      source: 'Images\login\cptbanner.jpg' 
      allow_stretch: True 
      keep_ratio: True 
""") 

class MainWindow(BoxLayout): 
    def __init__(self, **kwargs): 
     super(MainWindow, self).__init__(**kwargs) 

class MyApp(App): 
    def build(self): 
     return MainWindow() 

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

結果:

enter image description here

+0

これがありますまさに私が必要としたもの。なぜあなたの乗算self.height * 0.9とself.height * 0.1を説明してくださいできますか?ありがとう! – supreme

+0

'size:self.width、self.height * 0.1'は' size_hint:1、0.1'と等価です(Rectangleで 'size_hint'を使うことはできません)。 'Pos:0、self.height * 0.9'は、矩形を正しい位置に置くことを可能にします - > x = 0、y =(父の高さ - 矩形の高さ)。 (父の高さ - 長方形の高さ)は(父* 0.9の高さ)と同じです。私はあなたがこれから何かを得ることを願っています、私の英語はあまり良くありません... :( – FJSevilla

+0

あなたの英語は十分な兄弟です、私はすべてを完全に理解しています。 – supreme

関連する問題