Como ya hay muchas vistas y los que más saben no te han contestado, me tomo el atrevimiento de hacerlo:
1)
Quizás recomendaríais otro tipo de modulo para este tipo de impresiones
Efectivamente,pygame está pensado para otras cosas, es como querer cocinar sobre un motor de auto porque este se calienta.
2)
¿Pygame no tiene la barra de desplazamiento como las ventanas de windows?
pygame no tiene ni la ventana! por eso la definis cuando la creas, de la misma forma podés implementar una barra de desplazamiento, creándola!
3)
Si lo ejecutáis se crea una columna del 1 al 20 y otra del 21 al 40.
¿Es la forma correcta de imprimir un ciclo FOR en pygame?
no existen formas correctas o incorrectas, solo distintas
4)
Claro esta que llegaría un momento que también se llegaría al limite de esa misma ventana ¿Se debería crear una nueva ventana y perderíamos la anterior?
Siempre podrías guardar los datos y si cambias de ventanas(o redibujar) poner lo que quieras.
5)en lo particular redibujaría la pantalla con los datos y columnas que quiera para que no se llene y simular un desplazamiento, algo así:
#-*- coding:utf -8 -*-
import pygame
class Lugar:
total_lugares = 20
numeros=list(range(1,51))
inicio=0
final=total_lugares
maximo=len(numeros) -total_lugares +1
def lista(self):
x=0
y=0
for i in range(Lugar.total_lugares):
texto = fuente.render(str(Lugar.numeros[i]), 0, (255,255,255 ))
pantalla.blit(texto,(x,y))
y+=20
def arriba(self):
x=0
y=0
if Lugar.inicio < Lugar.maximo - 1:
Lugar.inicio+=1
Lugar.final+=1
parcial=Lugar.numeros[Lugar.inicio:Lugar.final]
pantalla.fill((0,0,0))
for i in range(Lugar.total_lugares):
texto = fuente.render(str(parcial[i]), 0, (255,255,255 ))
pantalla.blit(texto,(x,y))
y+=20
def abajo(self):
x=0
y=0
if Lugar.inicio > 0 :
Lugar.inicio-=1
Lugar.final-=1
parcial=Lugar.numeros[Lugar.inicio:Lugar.final]
pantalla.fill((0,0,0))
for i in range(Lugar.total_lugares):
texto = fuente.render(str(parcial[i]), 0, (255,255,255 ))
pantalla.blit(texto,(x,y))
y+=20
pygame.init()
dimension=(800,600)
pantalla = pygame.display.set_mode(dimension)
fuente = pygame.font.SysFont('Comic Sans MS', 20, True, False)
salir=False
reloj=pygame.time.Clock()
lugar1=Lugar()
lugar1.lista()
while salir != True :
for evento in pygame.event.get():
if evento.type == pygame.KEYDOWN:
if evento.key == pygame.K_DOWN:
lugar1.arriba()
if evento.key == pygame.K_UP:
lugar1.abajo()
if evento.type == pygame.QUIT:
salir=True
reloj.tick(20)
pygame.display.update()
por supuesto hay muchas otras formas de hacerlo
6)como dije antes se puede hacer con gráficos, no solo con las teclas de arriba y abajo, pero ese sería otro tutorial o te toca realizarlo solo.
Saludos