Text User Interface con Python – Lezione 01

Continuiamo il nostro percorso di lezioni sulle interfacce grafiche testuali vedendo un elemento significativo: l’interazione con l’utente attraverso tastiera e inserimento da tastiera.

L’idea del nostro esercizio è di creare un programmino che si interrompe quando viene digitata la lettera q (q sta per quit in inglese). Mentre il nostro software “gira”, a fronte di una digitazione da tastiera ci fa comparire una sorta di menù da cui possiamo scegliere tre voci con i corrispondenti valori numerici 1,2,3. Digitando una scelta, il software ci mostra un messaggio opportuno.  

Prima di entrare nel codice, ci serve una funzioncina capace tradurre il codice della tastiera in numero Unicode, che è gestito dalla nostra libreria curses. Per fare questo ci basta usare la funzione ord().

Vediamo un esempio semplice con un ciclo infinito che esce a fronte della digitazione del tasto q.

import curses

schermo = curses.initscr()
curses.noecho() 
curses.cbreak() 
schermo.keypad(1) 

tasto = ''
while (tasto != ord('q')):
  schermo.clear() 
  schermo.refresh()
  if tasto == ord('1'):
    schermo.addstr(25,40, " Hai scelto 1 ", curses.A_STANDOUT)
  elif tasto == ord('2'):  
    schermo.addstr(25,40," Hai scelto 2 ", curses.A_STANDOUT)
  elif tasto == ord('3'):
    schermo.addstr(25,40," Hai scelto 3 ", curses.A_STANDOUT)
  elif tasto == '':    
    schermo.addstr(20,40,"Digita un numero tra 1, 2, 3", curses.A_UNDERLINE)     
  else:  
    schermo.addstr(25,40,"Scelta non riconosciuta", curses.A_STANDOUT)
  tasto = schermo.getch()

Come può vedere il lettore, esiste una funzione standard che “preleva il char”, getchar appunto, che viene fatta all’interno del nostro loop infinito. Le altre istruzioni le abbiamo viste nella scorsa lezione e qui solo riassemblate con questa struttura di if/else/else if. Il software rimane in una attesa infinita che vengano digitati i tasti 1, 2 o 3 per stampare quindi un semplice messaggio a fronte del carattere immesso o un errore. Il tutto viene chiuso quando si preme il tasto q, il classico tasto per effettuare una quit dal programma.

Ultima modifica 22 Marzo 2023