Intro a Python per Windows — 7: GUI (inizio)

Basta con il Prompt dei comandi (quello che alcuni chiama terminale), vogliamo le finestre, complete dei relativi oggetti per l’interazione! 😀
Sì, va bene; oggi iniziamo. E partiamo da cose molto semplici, ma poi, forse…

Zenity
Ho raccontato di Zenity in un post precedente, qui.

La si parlava di zenity per Linux ma è una cosa talmente bella che c’è stato chi l’ha portata su Windows: Placella.com. Chi è Placella? Mystero mysterioso 😉 non mette mai un about nelle sue pagine, è peggio di me!
In ogni caso Placella ha fatto un ottimo lavoro per cui propongo di andare qui, ammirare l’immagine di presentazione di Zenity per Windoze e scaricarlo, seguendo il link sulla stessa pagina. Non resta che installarlo e il gioco è fatto.
Se ho capito bene la versione win32-3 non è ancora pronta, per precauzione ho installato la win32-2.

Pronti a provarlo?
Con Notepad2 creiamo, nella cartella C:\OKp il file test_z.bat con il seguente contenuto

@echo off
zenity  --question --ok-label="Yes" --cancel-label="No" --text="Please press a button."
if %ERRORLEVEL% == 1 goto error
    zenity --info --text="You pressed Yes!"
    goto end
:error
    zenity --error --text="You pressed No!"
:end

e possiamo provarlo in due modi.
modo 1 – Apriamo il Prompt dei comandi (dai è l’ultima volta) e andiamo nella directory OKp (cd \Okp, eventualmente cambiano il disco se richiesto, es. D:).
Diamo il comando test_z e otterremo

e a seconda della scelta potremo avere una delle due finestre in figura

modo 2 – Apriamo Explorer (Esplora risorse) e navighiamo fino a C:\OKp, facciamo doppio click sull’icona test_z (o test_z.bat se abbiamo settato di non nascondere le estensioni) e otterremo lo stesso risultato del modo 1, senza bisogno del Prompt dei comandi 😀

Naturalmente con Zenity si possono fare tante altre cose. Una che su Ubuntu rischia di passare inosservata è la notifica. Su Windows probabilmente nessuno la noterebbe! Comunque per chi volesse provarla eccola

zenity --notification --window-icon="info" --text="Attento: da quanti giorni non fai il backup?"

che produce

La notifica è l’icona con la lampadina, il messaggio compare solo se con il mouse vi fermate sull’icona e tipicamente le icone nell’area di notifica sono parecchie e solo alcune sono sempre visibili, quella no.

AutoIt
I più attenti quando hanno provato il modo 2 avranno senz’altro notato un flash di buio, come se la famigerata finestra di Prompt dei comandi apparisse per un attimo e si chiudesse subito. Sì è proprio successo quello. Placella è conscio del problema e propone una sua soluzione, non tanto bella, esiste un’alternativa semplice e potente: AutoIt.
AutoIt fa tante cose, è un vero e proprio linguaggio di programmazione, gratuito, facile e efficiente (per quasi tutto, ha delle limitazioni). Noi ne useremo una parte piccolissima. E siamo anche sfortunati: qualcuno ha pensato di fare un virus chiamandolo AutoIt per cui l’antivirus salta su allarmato. Non è un virus, almeno quello che usiamo noi 🙂

Allora con Notepad2 creiamo il file atz.au3 con il seguente contenuto

run(@ComSpec & " /c " & 'C:\OKp\test_z.bat', "", @SW_HIDE)
exit

Con Explorer andiamo nella cartella AutoIt/Aut2Exe e lanciamo Aut2exe, compare questo dialogo che compiliamo come in figura

Facendo click su Convert succedono due cose: un messaggio che la conversione è stata completata e un’allerta dell’antivirus. Nel mio caso questo qui

siccome sappiamo che è un falso allarme chiudiamo la finestra e tornando in OKp possiamo lanciare atz.exe che fa esattamente quanto ci eravamo proposto.

Soluzioni alternative
Ci sarebbero anche altri componenti da esaminare, per esempio EasyGui, eccone un esempio, solo un assaggino

from easygui import *
import sys

while True:
	msg ="What is your favorite flavor?"
	title = "Ice Cream Survey"
	choices = ["Vanilla", "Chocolate", "Strawberry", "Rocky Road"]
	choice = choicebox(msg, title, choices)

	if choice == None:
		sys.exit(0)

	msgbox("You chose: " + str(choice), "Survey Result")

perché funzioni dovete scaricare il file easygui_v0.95.zip e estrarre easygui.py nella stessa cartella dello script (la solita OKp).
Altre ancora se ne possono trovare con un po’ di googlaggio, ma non so se è quello che vogliamo.

Quindi, alla fine della fiera
Oggi abbiamo visto come costruire semplici finestre per interagire con il PC, usando pacchetti molto elementari. Troppo elementari forse, quando il gioco si fa duro Python e/o i suoi amici entrano in campo (cit.). E, tutto sommato, una volta visto come si fa è anche più semplice, restate sintonizzati 😀

Posta un commento o usa questo indirizzo per il trackback.

Trackback

  • Aggiornamenti & news « Ok, panico su 9 gennaio 2011 alle 12:34

    […] fa ho raccontato anche di Zenity qui e qui. Da un po’ di tempo Zenity non viene aggiornato, d’accordo che va bene così […]

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: