2017-07-06 82 views
0

這讓我瘋狂。我試圖用FloatLayout將圖像定位到主窗口的頂部。以下是一個簡單的例子。使用FloatLayout定位圖像

看起來按鈕是好的,但圖像默認爲100x100的方格(是的,我認爲我已經在某處讀過),圖像的頂邊框位於屏幕的頂部,而不是圖片。

如何強制圖像(矩形的頂部)到窗口的頂部,如按鈕是?

Screen_showing example_button_and_image

import kivy 
kivy.require('1.10.0') 
from kivy.app import App 
from kivy.uix.button import Button 
from kivy.uix.image import Image 
from kivy.uix.floatlayout import FloatLayout 
from kivy.config import Config 

Config.set('graphics', 'width', '480') 
Config.set('graphics', 'height', '800') 

class MyApp(App): 

    def setOrientation(self, orient): 
     """""" 
     self.orient = orient 

    def build(self): 
     return FloatLayout() 

if __name__ == "__main__": 
    app = MyApp() 
    app.setOrientation(orient="vertical") 
    app.run() 


<FloatLayout>: 
    Image: 
     source: 'image_400x90.png' 
     pos_hint: {'left':1, 'top':1} 
     size_hint: None, None 
     allow_stretch: False 
     keep_ratio: True 

    Button: 
     font_size: 30 
     color: 0,1,0,1 
     size_hint: 0.3, 0.1 
     text: "TopRight" 
     pos_hint: {'right':1, 'top':1} 

回答

1

即happend因爲圖像是一個Widget和「實像」(圖片)是窗口小部件的紋理,並且默認情況下,圖像的中心與配合內小部件邊界框。如果你不想這樣做,你可以將allow_stretch設置爲True,keep_ratio設置爲False。docs

對於明白,你可以在圖像控件與矩形添加一個帆布這樣的:

Image: 
     canvas: 
      Color: 
       rgba: 1, 1, 1, 0.5 
      Rectangle: 
       pos: self.pos 
       size: self.size 
     source: 'dog.jpg' 
     pos_hint: {'left':1, 'top':1} 
     size_hint: None, None 
     allow_stretch: True 
     keep_ratio: False 

然後你可以看到爲什麼你想要的圖像沒有做

enter image description here

另一個PIC(圖像(紋理)的中心並適合插件內側):

enter image description here

一兩件事你可以做的是設置allow_stretch:True和keep_ratio:假 這是結果:(設定size_hint大小)

enter image description here

0

Favcau給上述一種溶液(謝謝),但我發現我認爲更明顯。它只需要在kv文件中定義大小。

Image: 
    id: image2 
    source: 'image_400x90.jpg' 
    pos_hint: {'left':1, 'top':1} 
    size_hint: None, None 
    size: 400, 90 
    allow_stretch: True 
    keep_ratio: False