2016-09-22 59 views
1

我正在写一个程序,使用kivy在屏幕上显示4个图像。 目标窗口我想是这样的: targetkivy GridLayout和AnchorLayout

其中窗口的背景是白色的,和4个图像由绿色rectangles.The屏幕比例描绘为16:9,但图像比为4 :3。我想将这4张图片粘贴到屏幕中央。

我使用网格布局和AnchorLayout试过了,代码如下:

from kivy.app import App 
from kivy.uix.image import Image 
from kivy.config import Config 
from kivy.uix.anchorlayout import AnchorLayout 
from kivy.uix.gridlayout import GridLayout 

class MainScreen(GridLayout): 

    def __init__(self, **kwargs): 

     super(MainScreen, self).__init__(**kwargs) 

     self.float_list = [] 
     self.anchor_list = [] 
     self.image_list = [] 
     self.rows = 2 

     for i in range(4): 
      if i % 2 == 0: 
       self.anchor_list.append(AnchorLayout(anchor_x='right')) 
      else: 
       self.anchor_list.append(AnchorLayout(anchor_x='left')) 

      self.image_list.append(Image(source='./tmp_pics/1.jpg')) 

      self.anchor_list[i].add_widget(self.image_list[i]) 
      self.add_widget(self.anchor_list[i]) 

class MainDisplay(App): 

    def __init__(self): 
     super(MainDisplay, self).__init__() 

    def build(self): 

     self.mainScreen = MainScreen() 

     return self.mainScreen 

if __name__ == '__main__': 

    Config.set('graphics', 'width', '1600') 
    Config.set('graphics', 'height', '900') 

    app = MainDisplay() 
    app.run() 

但我得到的结果是: result

请任何人都可以帮我获得上述要求?

回答

0

的关键是把所有这些图像的在单个网格布局,这将在屏幕的中间居中然后:

#!/usr/bin/env python3.5 
# -*- coding: utf-8 -*- 
from kivy.app import App 
from kivy.lang import Builder 

gui = ''' 
Screen: 

    GridLayout: 
     cols: 2 
     rows: 2 
     size_hint: None, None 
     size: self.minimum_size 
     pos_hint: {'center_x': 0.5, 'center_y': 0.5} 

     MyImage 
     MyImage 
     MyImage 
     MyImage 

<[email protected]> 
    size_hint: None, None 
    size: 400, 200 
    source: 'http://lorempixel.com/400/200/cats/' 
''' 


class Test(App): 

    def build(self): 
     return Builder.load_string(gui) 


Test().run()