Corso di programmazione Python su Flip&Click: GUI e programmazione grafica

Nelle scorse puntate vi abbiamo presentato tutti gli aspetti più importanti della realizzazione di codice mirato all'interazione tra il mondo fisico, dei sensori e degli attuatori, i microcontrollori e le schede di prototipazione rapida e la programmazione "pura". Vi abbiamo finora presentato il Python evidenziando le principali caratteristiche, tra cui il vantaggio di essere un linguaggio astratto ma efficace, scevro da alcune asperità in termini di sintassi e costrutti, soprattutto nel confronto con altri linguaggi. Oggi concludiamo il nostro corso parlando della realizzazione di interfacce grafiche: inizieremo con i concetti elementari per vedere come si possa realizzare un'interfaccia semplice per un progetto che si basa sulla rilevazione di una variabile come, per esempio, la temperatura. Infine vi presenteremo una serie di soluzioni cross-platform che vi consentiranno di utilizzare Python su diversi sistemi operativi.

Introduzione

Come detto in apertura, lo scopo di questa puntata è spiegare come viene costruito un programma che abbia un'interfaccia grafica. Dapprima tratteremo questo argomento in maniera generale e poi andremo nello specifico a vedere che strumenti vengono utilizzati.

Prima di cominciare, è importante specificare che quello che vedremo oggi non cambia quanto avete visto ed imparato finora sulla programmazione. La costruzione di un programma con interfaccia grafica, GUI (Graphical User Interface), segue esattamente gli stessi paradigmi visti finora ed anzi l'interfaccia non è altro che un modulo aggiuntivo del programma "sottostante" che avete già scritto. La differenza principale, l'unica notevole in verità, è che la programmazione di un'interfaccia grafica normalmente richiede un toolkit aggiuntivo, ovvero un componente ulteriore rispetto alla semplice IDLE che abbiamo visto fino a questo momento. Naturalmente questo vale anche se avete utilizzato altri ambienti di sviluppo per la sola scrittura del codice (come Zerynth).
Tenete presente che nella realizzazione di interfacce grafiche occorre seguire il modello di programmazione previsto da chi ha creato il componente aggiuntivo, ovvero il toolkit. Questo perché la logica di programmazione dipenderà molto dalle singole funzioni e dei singoli metodi che chi ha creato il framework di sviluppo ha pensato.
Non preoccupatevi però, perché tra la documentazione disponibile, l'esperienza che avete già fatto e qualche ricerca mirata su StackOverflow o similari, riuscirete sicuramente ad avere la meglio qualsiasi sia l'ambiente che state utilizzando. Man mano che diventerete bravi e avrete sviluppato i vostri programmi, personalizzato le nostre funzioni e scritto abbastanza metodi per le esigenze più disparate, probabilmente avrete bisogno di un'interfaccia grafica per portare i vostri codici a livello successivo. Vi proporremo una lista abbastanza esauriente e completa di tutti i framework che possono aiutarvi nella realizzazione di interfacce grafiche scritte in Python. Per il momento, però, sinteticamente vi presentiamo alcune delle principali.
Tanto per iniziare, il primo metodo di selezione per un'interfaccia di lavoro è la compatibilità con i vari sistemi operativi, Windows, MAC e Linux.
Ove possibile, suggeriamo anche di cercare una compatibilità ampia anche con Python 3; come vi abbiamo annunciato all'inizio del corso, tra la versione 2.7 e la 3.4 cambiano diverse librerie, metodi e funzioni anche tra quelle principali.

Matplotlib

Questo è un modulo per la generazione di grafici bidimensionali completamente sviluppato in Python ed utilizza "numpy" per la rappresentazione di array di grandi dimensioni. È di interesse perché la sua funzionalità rendono questo modulo molto adatto al calcolo scientifico. È globalmente costituito da tre componenti:

  • un'interfaccia ad oggetti, matplotlib API, che viene utilizzata direttamente per inserire le funzionalità di creazione dei grafici;
  • il modulo pyplot, che come il nome suggerisce è un'interfaccia che gestisce i più comuni comandi grafici di MATLAB, il che lo rende particolarmente utile per l'interazione diretta con l'utente;
  • l'output back-end, che gestisce l'output dei grafici su diverse interfacce ed anche su diversi tipi di file contenenti dati.

Per poterla utilizzare servono davvero poche righe di codice e adesso vediamo subito grazie ad un piccolo esempio:

import matplotlib.pyplot as plt
plt.rc('xtick', labelsize=8)
plt.rc('ytick', labelsize=8)
plt.figure(figsize=(4, 1.5))
plt.plot([1,2,3,4,5], [10,20,30,40,50])
plt.title("Test graph")
plt.savefig("test graph.jpg")

In questo script abbiamo:

  • importato un oggetto di tipo grafico assegnandogli un nome;
  • impostato gli assi cartesiani passando loro due parametri, relativi alle dimensioni dei caratteri;
  • utilizzato delle misure (in pollici!) per definire le dimensioni del grafico;
  • disegnato effettivamente il grafico. Qui ci soffermiamo un attimo perché alla funzione plot() sono stati passati due parametri, entrambi vettori di cinque elementi dei quali il primo rappresenta l'asse delle ascisse mentre il secondo quello delle ordinate;
  • abbiamo associato al grafico un nome, ovvero "Test Graph". Ovviamente, utilizzando funzioni analoghe per gli assi, possiamo definire anche le label di entrambi;
  • salvato il risultato su un file in formato ".jpg". Ovviamente la cartella di destinazione sarà la stessa in cui è in esecuzione il nostro script. Volessimo cambiarla, naturalmente, dovremo utilizzare [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 3465 parole ed è riservato agli abbonati PREMIUM. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici PREMIUM e potrai fare il download (PDF) dell'EOS-Book e Firmware del mese. ABBONATI ORA con PAYPAL è semplice e sicuro.

Abbonati alle riviste di elettronica

Una risposta

  1. Maurizio Di Paolo Emilio Maurizio Di Paolo Emilio 23 marzo 2017

Scrivi un commento