Módulo de pygame para controlar la ventana y pantalla de visualización.
Este módulo ofrece control sobre la visualización de pygame. Pygame contiene una sola superficie de visualización que puede estar contenida en una ventana o bien correr en pantalla completa. Una vez que cree la pantalla de visualización podrá tratarla como una superficie normal. Los cambios no se verán inmediatamente en pantalla, deberá elegir una de las dos funciones para actualizar la pantalla.
El punto de origen de la pantalla es x=0
e y=0
, este punto representa
la esquina superior izquierda de la pantalla. Ambos ejes aumentan en
dirección a la esquina inferior derecha de la pantalla.
La pantalla de pygame se puede inicializar en uno de varios modos de video. Por defecto la pantalla es una porción de memoria gestionada por software. Puede solicitar modos especiales como aceleración de video y soporte OpenGL enviando opciones a la función pygame.display.set_mode().
Pygame solo puede tener una pantalla activa a la vez. Crear una nueva usando
pygame.display.set_mode()
cerrará la anterior pantalla. Si se necesita
tener control preciso sobre el formato de pixels o las resoluciones
de video, utilice las funciones pygame.display.mode_ok(),
pygame.display.list_modes() y pygame.display.Info()
para consultar información acerca de la pantalla.
Una vez creada la superficie de visualización, las funciones de este módulo afectan a la pantalla existente. Si el módulo se deshabilita la superficie se convierte en inválida. Si se define un nuevo modo de video, la superficie existente automáticamente se cambiará para operar en la nueva pantalla.
Cuando se define el nuevo modo de video, se habilitan varios eventos
de pygame para gestionar el manejo de la ventana. El evento pygame.QUIT
se
genera cuando el usuario
solicita cerrar el programa. La ventana recibirá los eventos
pygame.ACTIVEEVENT
cuando obtenga o pierda el foco del sistema
de ventanas. Si la ventana se construye con las opciones pygame.RESIZABLE
,
se generarán los eventos pygame.VIDEORESIZE
cuando
el usuario ajuste las dimensiones de la ventana. Las superficies de video
en Hardware que imprimen directamente en la pantalla obtendrán eventos
pygame.VIDEOEXPOSE
cuando se deba redibujar porciones de la ventana.
Inicializa el módulo display.
pygame.display.init(): return None
Inicializa el módulo display de pygame. El módulo display no puede hacer
nada a menos que sea inicializado. Esto generalmente se hace por usted de
forma automática cuando llama a la función de mayor nivel pygame.init()
.
Pygame seleccionará una de varias extensiones internas de visualización cuando
se inicialice. La extensión interna se escogerá dependiendo de la plataforma
y los permisos de usuario. Antes de inicializar el módulo de video se
puede alterar la variable de entorno SDL_VIDEODRIVER
para controlar
la extensión interna de visualización. Los sistemas que tienen varias de estas
extensiones se muestran aquí:
En algunas plataformas es posible incrustar la pantalla de pygame en una
ventana existente. Para hacer esto, se debe definir la variable de entorno
SDL_WINDOWID
con una cadena que contenga el identificador o manejador
de la ventana. La variable de entorno será verificada cuando se inicie
el modo de video. Tenga en cuenta que pueden ocurrir varios efectos secundarios
cuando utilice este modo de video incrustado.
Es inofensivo llamar a esta función mas de una vez, las sucesivas llamadas no tendrán efecto.
Deshabilita el módulo de video.
pygame.display.quit(): return None
Apagará el módulo display entero. Esto significa que cualquier pantalla activa se cerrará. Esto también se puede manejar de forma automática cuando el programa se cierra.
Es inofensivo llamar a esta función mas de una vez, las sucesivas llamadas no tendrán efecto.
Devuelve True
si el módulo display se ha inicializado.
pygame.display.get_init(): return bool
Retorna True
si el módulo pygame.display
está inicializado
actualmente.
Inicializa una ventana o la pantalla para visualizar.
pygame.display.set_mode(resolution=(0,0), flags=0, depth=0): return Surface
Esta función construirá una superficie de pantalla. Los argumentos que se le envían solicitan el tipo de pantalla deseado. Si no especifica ningún argumento, la pantalla generada será tan grande como el mejor modo de video soportado por el sistema.
El argumento resolution
es una tupla de números que representan
el ancho y alto. El argumento flags
es una colección de
opciones adicionales. El argumento depth
representa el número de
bits utilizados por color.
El objeto Surface retornado se puede manipular como un objeto Surface normal, solo que los cambios eventualmente se podrán observar en el monitor.
Si no se especifica una resolución, o esta se define en (0, 0) y pygame utiliza la versión 1.2.10 de SDL o superior, la superficie creada tendrá el mismo tamaño que la resolución de pantalla actual. Si solo se define el ancho o alto a 0, la superficie tendrá el mismo alto o ancho de la resolución de pantalla. Se lanzará una excepción si está utilizando una versión menor a 1.2.10 de SDL.
Generalmente es mejor no especificar el argumento depth
. Por defecto
este coincidirá con la mejor y mas rápida profundidad de color para
el sistema. Si su juego requiere un formato de color específico, el
argumento depth
puede definirlo. Pygame puede emular una profundidad de
color no disponible aunque esto puede ser muy lento.
Cuando solicita modos de video en pantalla completa, a veces no se puede definir un modo de video exactamente igual al solicitado. En esas situaciones pygame seleccionará el modo de video mas cercano. Aún así, la superficie que se retorna siempre coincidirá exactamente con la resolución solicitada.
El argumento flags define que tipo de pantalla desea. Hay varias opciones para elegir, e incluso usted puede combinar varias opciones usando operaciones de bits, usando el operador “|” pipe.
Opción | Significado |
---|---|
pygame.FULLSCREEN | Genera una visualización de pantalla completa |
pygame.DOUBLEBUF | Recomendado para combinar con HWSURFACE u OPENGL |
pygame.HWSURFACE | Aceleración por hardware, solo funciona conjuntamente con FULLSCREEN |
pygame.OPENGL | Genera una pantalla que se puede dibujar con opengl |
pygame.RESIZABLE | La ventana se debe poder cambiar de tamaño |
pygame.NOFRAME | La ventana no deberá tener bordes, titulo o controles |
Obtiene una referencia a la superficie de pantalla actual.
pygame.display.get_surface(): return Surface
Retorna una referencia a la superficie de pantalla actual. Si no se
ha definido un modo de video esta función retornará None
.
Actualizar la superficie de visualización por completo sobre la pantalla.
pygame.display.flip(): return None
Actualizará el contenido de la pantalla entera. Si su modo de video usa
las opciones pygame.HWSURFACE
y pygame.DOUBLEBUF
, esta operación
esperará el retraso vertical e intercambiará las superficies. Si está
usando un modo de video de diferente tipo, esta función simplemente actualizará
el contenido completo de la superficie.
Cuando se usa un modo de video de tipo pygame.OPENGL
esta función
realizará un intercambio de buffer de OpenGL.
Actualiza porciones de la pantalla para modos de video de software.
pygame.display.update(rectangle=None): return None pygame.display.update(rectangle_list): return None
Esta función es como una versión optimizada de pygame.display.flip para pantallas de software. Permite que solo una porción de la pantalla se actualice, en lugar de toda el área de pantalla. Si no se pasan argumentos, se actualizará la superficie completa como en pygame.display.flip.
Puede pasar a la función un rectángulo, o una secuencia de rectángulos. Es
mas eficiente pasar varios rectángulos de una sola vez en lugar de
llamar muchas veces a update
con un solo rectángulo o una lista
parcial de rectángulos. Es seguro pasar una secuencia de rectángulos
con elementos None
en ella, estos elementos serán ignorados.
Esta función no se debe usar en pantallas pygame.OPENGL
, dado que
generarán una excepción.
Obtiene el nombre del controlador interno de visualización.
pygame.display.get_driver(): return name
Pygame elige uno de varios controladores de video internos cuando se
inicializa. Esta función retorna el nombre interno del controlador
utilizado. Esto puede utilizarse para proveer información limitada acerca
de qué capacidades de video se pueden acelerar. Vea la opción SDL_VIDEODRIVER
in la función pygame.display.set_mode() para ver algunas
opciones adicionales.
Obtiene información acerca sistema de ventana actual.
pygame.display.get_wm_info(): return dict
Genera un diccionario lleno de claves. Las cadenas y los valores son creados arbitrariamente por el sistema. Algunos sistemas podrían no brindar información, en cuyo caso se retorna un diccionario vacío. La mayoría de las plataformas retornan una clave window con el identificador de la ventana asignado por el sistema.
Esta función es nueva en pygame 1.7.1
Obtiene una lista de los modos de pantalla completa disponibles
pygame.display.list_modes(depth=0, flags=pygame.FULLSCREEN): return list
Esta función retorna una lista de las posibles resoluciones para una profundidad de color definida. El valor de retorno será una lista vacía si no hay modos de video disponibles para los argumentos dados. Un valor de retorno -1 significa que cualquier resolución debería funcionar (este es generalmente el caso de los modos en ventana). Los modos de video se ordenan de mayor (primeros) a menor (últimos).
Si el argumento depth
es 0, SDL seleccionará la actual/mejor profundidad
de color para la pantalla. El argumento flags
está por defecto en
el valor pygame.FULLSCREEN
, pero usted puede agregar mas opciones
para modos de video en pantalla completa específicos.
Elige la mejor profundidad de color para el modo de video.
pygame.display.mode_ok(size, flags=0, depth=0): return depth
Esta función utiliza los mismos argumentos que la función pygame.display.set_mode. Se usa para determinar si está disponible el modo de video solicitado. En caso de no estar disponible retorna la profundidad de color que mejor coincida con la pantalla solicitada.
Generalmente no se especifica el argumento depth
, dado que algunas
plataformas suportan varios modos de video. Si especifica este argumento
dará a entender cual es el mejor modo de video.
Las opciones flags
mas útiles son pygame.HWSURFACE
, pygame.DOUBLEBUF
y tal vez pygame.FULLSCREEN
. La función retornará 0 si no se puede
definir este tipo de pantalla.
Obtiene el valor de los atributos de opengl para la pantalla actual.
pygame.display.gl_get_attribute(flag): return value
Después de llamar a pygame.display.set_mode()
con la opción
pygame.OPENGL
, es una buena idea consultar el valor de cualquier
atributo de opengl solicitado. Vea las función
pygame.display.gl_set_attribute() para obtener
una lista de opciones válida.
Solicita un atributo de OpenGL para el modo de video.
pygame.display.gl_set_attribute(flag, value): return None
Cuando llama a pygame.display.set_mode() con la opción
pygame.OPENGL
, pygame automáticamente maneja la configuración
de los atributos de OpenGL como el color y el double buffer. OpenGL
ofrece muchos otros atributos que tal vez quiera controlar por su
cuenta. Indique uno de estos atributos como el parámetro flag
y
su valor apropiado como value
. Esto debe llamarse antes de
ejecutar pygame.display.set_mode().
Las opciones de OpenGL, para el argumento flag
son:
Devuelve True cuando la ventana se está mostrando en la pantalla.
pygame.display.get_active(): return bool
Luego de llamar a pygame.display.set_mode
la superficie de visualización
se hará visible en la pantalla. La mayoría de los sistemas de ventanas
permiten que el usuario pueda ocultar las ventanas. Esta función retornará
False si la pantalla de visualización está oculta o minimizada.
Minimiza la aplicación.
pygame.display.iconify(): return bool
Solicita al sistema de ventanas que oculte o minimice la pantalla. No todos los sistemas y pantallas soportan esta opción. La función retornará True en caso de éxito.
Cuando la pantalla está minimizada la función pygame.display.get_active()
retornará False. La cola de eventos debería recibir el evento ACTIVEEVENT
cuando la ventana se minimiza.
Alterna entre la visualización de ventana o pantalla completa.
pygame.display.toggle_fullscreen(): return bool
Alterna entre los modos de video pantalla completa y ventana. Esta operación
solo funciona bajo el controlador x11 de unix. Para la mayoría de
las situaciones es mejor llamar a pygame.display.set_mode()
con
las nuevas opciones de pantalla.
Cambia los niveles de color del hardware.
pygame.display.set_gamma(red, green=None, blue=None): return bool
Define los niveles de rojo, verde y azul en el hardware de video. Si no se especifican los valores verde y azul, ambos se evaluarán como si tuvieran el mismo valor que el componente rojo. No todos los sistemas y hardware soportan paletas gama, si la función retorna True si opera correctamente.
Un valor gamma de 1.0 genera una tabla de color lineal. Los valores inferiores harán mas oscura la pantalla y los valores superiores aumentarán el brillo.
Cambia la paleta de colores de hardware con una búsqueda personalizada.
pygame.display.set_gamma_ramp(red, green, blue): return bool
Define los niveles de rojo, verde y azul con una tabla de búsqueda explícita.
Cada argumento debería ser una secuencia de 256 números enteros. Los enteros
deberían estar entre 0
y 0xffff
. No todos los sistemas
y hardware soportan paletas gama, si la función retorna True si
opera correctamente.
Cambia la imagen de sistema para la ventana.
pygame.display.set_icon(Surface): return None
Define el icono de ejecución que el sistema usará para representar la ventana. Por defecto todas las ventanas muestran el logo de pygame como icono de la ventana.
Puede especificar cualquier superficie, aunque la mayoría de los sistemas esperan una imagen pequeña estilo 32×32. La imagen puede tener una transparencia por color clave que será enviada al sistema.
Algunos sistemas no permite que se cambie el icono luego de que
la ventana se ha mostrado. Esta función se puede llamar antes de
pygame.display.set_mode()
para crear el icono antes de especificar
el modo de video.
Define el título de la ventana.
pygame.display.set_caption(title, icontitle=None): return None
Si la pantalla tiene un título de ventana, esta función cambiará ese título. Algunos sistemas soportan un titulo alternativo mas corto para utilizarse en ventanas minimizadas.
Obtiene el título de la ventana.
pygame.display.get_caption(): return (title, icontitle)
Retorna el título principal y el titulo alternativo (para ventanas minimizadas) de la ventana principal. Estos generalmente tienen el mismo valor.
Define la paleta de colores para modos de video indexado.
pygame.display.set_palette(palette=None): return None
Cambiará la paleta de colores para pantallas de 8bit. No cambia la paleta de la superficie de visualización, solo cambia la palera que se usa para mostrar la superficie. Si no se especifica un argumento, se restaurará la paleta por defecto. La palera es una secuencia de ternas RGB.