从lis中的项目创建可滚动的矩形

2024-05-12 11:19:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个程序,里面有一个名字列表。我希望能够将这些名字列在一个矩形上。我希望每个名称创建自己的矩形。本例为列表中的每个标题创建一个矩形,我将''放在列表的开头,因为我收到一个错误,说我在python中不能通过添加''来除以零。修复了这个错误

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个像素。我也觉得有更好的方法


Tags: inrectevent列表forifwidthscreen
1条回答
网友
1楼 · 发布于 2024-05-12 11:19:45

定义到屏幕顶部的距离。e、 g.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))

注意,您可以使用^{}来获取列表索引和列表元素的元组

相关问题 更多 >