2017-09-24 10 views
0

我正在尝试在pygame中构建移动界面。我有一个名为apps的文件夹,每个应用程序都包含两个文件:“app.py”和“app.png”。目前我可以获取应用程序名称的文件夹内容。文件内容保存在一个数组中。我试图从每个文件夹中获取“app.png”并将其添加到pygame屏幕?如何根据数组的路径参加pygame窗口的图像?

这里是我当前的代码:

from pygame import * 
import os 
import pygame 
import time 
import random 

_image_library = {} 

class SeedOS(): 

    def home(self): 
     def get_image(path): 
      global _image_library 
      image = _image_library.get(path) 
      if image == None: 
       canonicalized_path = path.replace('/', os.sep).replace('\\', os.sep) 
       image = pygame.image.load(canonicalized_path) 
       _image_library[path] = image 
      return image 
     (width, height) = (240, 320) 
     screen = pygame.display.set_mode((width, height)) 
     pygame.display.set_caption('Seed OS') 
     BLACK = (0,0,0) 
     screen.fill(BLACK) 
     apps = os.walk("apps").next()[1] 
     app_count = 0 
     while app_count < len(apps): 
      print apps[app_count] 
      icon_width = 0 
      icon_height = 0 
      screen.blit(get_image("apps/" + apps[app_count] + "/app.png"), (icon_width, 0)) 
      icon_width+=70 
      app_count += 1 
     pygame.display.flip() 
     running = True 
     while running: 
      for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       running = False 
phone = SeedOS() 
phone.home() 

回答

2

注意icon_width是怎么熬过这些while-loop重新初始化为零每次迭代:

while app_count < len(apps): 
    print apps[app_count] 
    icon_width = 0 
    icon_height = 0 
    screen.blit(get_image("apps/" + apps[app_count] + "/app.png"), (icon_width, 0)) 
    icon_width+=70 
    app_count += 1 

所以screen.blit将始终将图像在(0, 0); icon_width+=70是nugatory。相反,你可以使用类似:

icon_width = 0 
icon_height = 0 
max_width = 240 # <-- you'll need to decide how to set this, depending on size of screen 
while app_count < len(apps): 
    print apps[app_count] 
    screen.blit(get_image("apps/" + apps[app_count] + "/app.png"), 
       (icon_width, icon_height)) 
    icon_width += 70 
    if icon_width > max_width: 
     icon_width = 0 
     icon_height += 70 # <-- assuming app.pngs have constant height 
    app_count += 1 

这仍然是相当简陋 - 它没有解决的 不同大小的app.png S中的可能性,也没有什么,如果有更多的图片做的比可以在屏幕上适合 。但是,这应该让你在第一个驼峰 - 如何将图像放置在不同的位置。