2016-09-22 7 views
1

Я пишу программу, используя киви, для отображения 4 изображений на экране. Мишень окно Я хочу, чтобы, как это: targetkivy GridLayout и AnchorLayout

где на фоне окна белого цвета, и 4 изображения показаны соотношением зеленого экрана rectangles.The составляет 16: 9, но соотношение изображения 4 : 3. Я хочу вставить эти 4 изображения в центр экрана.

Я попытался с помощью GridLayout и 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()