La funzione Display.set_mode() di pyGame

La funzione Display.set_mode() di pyGame mi permette di creare un oggetto di superficie in Python, ossia un'area di lavoro o un 'immagine a due dimensioni (x,y) su cui disegnare.

display.set_mode(dim, flag, bit depth)

L'argomento dim della funzione è una tupla (x,y) in cui specifico la larghezza e l'altezza della finestra in pixel. E' l'unico obbligatorio.

Ad esempio

pygame.display.set_mode((400,300))

Gli altri due argomenti sono facoltativi.

L'argomento flag indica le caratteristiche della superficie.

  • FULLSCREEN definisce una visualizzazione a tutto schermo
  • RESIZABLE la possibilità di ridimensionare la finestra
  • NOFRAME rimuove i bordi e la barra del titolo della finestra
  • DOUBLEBUG crea un doppio buffer della superficie. E' utile se si utilizza uno dei seguenti flag
  • HWSURFACE crea un display con accelerazione hardware. E' necessario combinarlo con il flag fullscreen.
  • OPENGL crea un display opengl

Nota. Se non sono stati caricati in locale tutti i flag devono essere precededuti da pygame e un punto (es. pigame.FULLSCREEN).

Per concatenare più flag basa usare il carattere | come separatore.

Lo zero invece indica l'assenza di flag.

Ad esempio

pygame.display.set_mode((400,300), pygame.RESIZABLE|pygame.NOFRAME)

L'argomento bit depth è un numero intero (0,8,15,16,24,32) che indica la profondità ossia la quantità di bit usata per memorizzare i colori del display..

  • 8 bit per una palette di 256 colori
  • 15 bit per una palette di 32768 colori
  • 16 bit per una palette di 65536 colori
  • 24-32 bit per una palette di 16,7 milioni di colori

Ad esempio

pygame.display.set_mode((400,300),0,32)

Il valore di default dell'argomento bit depth è 0 che consente a pygame di usare automaticamente la profondità dei colori dello schermo del pc.

    Un esempio pratico

    In questo script Python definisco una finestra larga 400 pixel e alta 300 pixel. La salvo nell'oggetto finestra1.

    1. import pygame
    2. from pygame.locals import *
    3. pygame.init()
    4. finestra1 = pygame.display.set_mode((400,300))
    5. pygame.display.set_caption('Titolo della finestra')
    6. pygame.display.update()
    7. while True:
    8. for event in pygame.event.get():
    9. if event.type == QUIT:
    10. pygame.quit()
    11. sys.exit()

    Nelle righe 1-2 carico nella memoria dello script le funzioni della libreria pygame.

    Nella riga 3 inizializzo pygame con la funzione pygame.init().

    pygame.init()

    Nella riga 4 creo una finestra di dimensioni 500x500 tramite la funzione display.set_mode()

    Nello script assegno l'oggetto di superficie alla variabile finestra1.

    finestra1 = pygame.display.set_mode((400,300))

    Nella riga 5 scrivo il titolo della finestra tramite la funzione display.set_caption().

    pygame.display.set_caption('Titolo della finestra')

    Nella riga 6 aggiorno e visualizzo la finestra sullo schermo tramite la funzione display.update().

    pygame.display.update()

    Nelle righe 7-11 inserisco poche righe di codice per aggiungere un event handler (gestore di eventi).

    L'event handler mi permette di mantenere in esecuzione lo script finché non chiudo la finestra.

    L'output dello script è il seguente:

    l'area di lavoro appare sullo schermo

    In questo modo ho creato un'area grafica su cui lavorare.

    Ovviamente l'area di lavoro è ancora vuota ...ma questo è un altro discorso.

    E così via.

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base

    PyGame