根据列表中的项目创建可滚动矩形

时间:2019-07-12 11:27:11

标签: python pygame

我有一个程序,其中有一个名称列表。我希望能够将每个这些名称列出到一个矩形中。我希望每个名称都创建自己的矩形。这个示例为列表中的每个标题创建一个矩形,我将''放在列表的开头,因为我收到一条错误消息,说我无法通过添加''来固定除以python中的零。 / p>

import pygame

width,height = 800,600
screen = pygame.display.set_mode((width,height))

mover = 0
games = ['','Space Invaders','Snake']
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
        if event.type == pygame.MOUSEBUTTONDOWN:
            if event.button == 4:
                if mover > 0:
                    mover -= 15
            if event.button == 5:
                if mover < (height-120)-60:
                    mover += 15
    screen.fill((47,79,79))
    for game in games:
        for num in range(len(games)):
            if num != 0:
                pygame.draw.rect(screen, (0,51,51), (100,((height-120)/num)-mover,width-200,20))
    pygame.draw.rect(screen, (0,51,51), (width-30,100,25,height-120)) #SCROLL BAR
    pygame.draw.rect(screen, (0,0,0), (width-29,mover+100,23,60)) #SCROLLING BAR
    pygame.draw.line(screen, (0,0,0), (0,100),(width,100), 4)
    pygame.display.flip()

我不确定如何使矩形靠得更近,因此每个矩形之间只有5到10个像素。我也觉得这样做有更好的方法。

1 个答案:

答案 0 :(得分:1)

定义到屏幕顶部的距离。例如100.定义线之间的距离。一条线的高度是20。如果两条线之间的间距应该是10,则距离是30。因此,一条线的起点是110 + num*30 - mover

for num, game in enumerate(games):
    pygame.draw.rect(screen, (0,51,51), (100, 110 + num*30 + mover, width-200, 20))

请注意,您可以使用enumerate获取列表索引和列表元素的元组。