2017-06-29 1 views
0

Ich habe viele Probleme, ein Bild zu Scatter in Kivy hinzuzufügen. Ich möchte, dass das Bild zuerst auf der gleichen Höhe wie das Boxlayout erscheint. Dann würde ich gerne bewegen und skalieren können (das funktioniert derzeit). Wenn ich den Code ausführe, wird das Bild sehr klein angezeigt. Ich möchte auch, dass das Bild seine Größe ändert, wenn die Größe des Fensters geändert wird. Ich bin neu in kivy, also wäre jede Hilfe großartig. Vielen Dank!Probleme mit Kivy Scatter, Bildgröße und Position

<MyGridLayout>: 
rows: 1 

BoxLayout: 
    id:layout1 
    orientation: 'vertical' 

    BoxLayout: 
     id: box1 
     size_hint : [1,0.5] 

     StencilView: 
      ScatterLayout: 
       center_x: box1.center_x 
       center_y: box1.center_y 

       Image: 
        source: 'histo_test.png' 
        size_hint_y: None 
        size_hint_x: None 
        width: self.parent.width 
        height: self.parent.width/self.image_ratio 
        center: self.parent.center 
        allow_stretch: True 
        keep_ratio: True 




    BoxLayout: 
     size_hint : [1,0.5] 
     id:box2 

     StencilView: 
      ScatterLayout: 
       center_x: box2.center_x 
       center_y: box2.center_y 

       Image: 
        source: 'flower.png' 
        size_hint_y: None 
        size_hint_x: None 
        width: self.parent.width 
        height: self.parent.width/self.image_ratio 
        center: self.parent.center 
        allow_stretch: True 
        keep_ratio: True 

Antwort

0

Die Größe des Bildes muss die Größe des StencilView sein, so:

size: stencil.width, stencil.height 

oder

width: stencil.width 
height: stencil.width/self.image_ratio 

(Schablone ist die ID des StencilView)

Und die Größe des ScatterLayout muss die Größe des Bildes sein:

size: my_image.size 

(my_image ist die ID des Bildes)

Sie können auch die Position des ScatterLayout mit der Position des StencilView gesetzt:

pos: stencil.pos 

statt dessen:

center_x: box1.center_x  
center_y: box1.center_y 

Uhr this video für mo zur Info


Ich schrieb diesen Code, der fast die gleiche

<MyGridLayout>: 
    orientation: 'vertical' 
    StencilView: 
     id: stencil1 
     Scatter: 
      pos: stencil1.pos 
      size: my_image1.size 
      Image: 
       id: my_image1 
       size: stencil1.width, stencil1.height 
       source: 'dog.jpg' 
       allow_stretch: True 
       keep_ratio: False 
    StencilView: 
     id: stencil2 
     Scatter: 
      pos: stencil2.pos 
      size: my_image2.size 
      Image: 
       id: my_image2 
       size: stencil2.width, stencil2.height 
       source: 'flower.jpg' 
       allow_stretch: True 
       keep_ratio: False 

Leider tut, wenn mein Englisch nicht klar

+0

ist Vielen Dank! Das hat perfekt funktioniert – jrx3ctl