Dimensione: 6752
Commento:
|
Dimensione: 6849
Commento:
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 3: | Linea 3: |
Ci sono un gran numero di toolkit disponibili per creare interfacce grafiche (GUI) con Python, da Tkinter (gia' compresa nella installazione di Python che consente l'interfaccia con X-Windows) a numerose altre multipiattaforma o specifiche per un certo ambiente. | Ci sono un gran numero di toolkit disponibili per creare interfacce grafiche (GUI) con Python, da Tkinter (già compresa nella installazione di Python che consente l'interfaccia con X-Windows) a numerose altre multipiattaforma o specifiche per un certo ambiente. |
Linea 11: | Linea 11: |
GTK+ (acronimo che sta per GIMP Toolkit) è un toolkit (insieme di strumenti), per la creazione di interfacce grafiche. Il toolkit è stato progettato inizialmente come ausilio alla programmazione per il programma GIMP è diventato una parte fondamentale dell'ambiente ''GNOME''. |
GTK+ (acronimo che sta per GIMP Tool Kit) è un toolkit (insieme di strumenti) per la creazione di interfacce grafiche. Il toolkit è stato progettato inizialmente come ausilio alla programmazione per il programma ''GIMP'' è diventato una parte fondamentale dell'ambiente ''GNOME''. |
Linea 14: | Linea 14: |
'''Py``GTK''' e' un set di moduli che permettono l'interfaccia tra Python e le librerie GTK, e' un toolkit orientato agli oggetti, permette quindi la possibilita' di riusare lo stesso codice in piu' applicazioni, e' stato portato ai Python coders da James Henstridge in collaborazione con un team di developers volontari. | '''Py``GTK''' è un set di moduli che permettono l'interfaccia tra Python e le librerie GTK, è un toolkit orientato agli oggetti, permette quindi la possibilità di riusare lo stesso codice in più applicazioni, è stato portato ai Python coders da James Henstridge in collaborazione con un team di developers volontari. Nell'installazione standard di Ubuntu è già presente tutto il necessario. |
Linea 71: | Linea 72: |
# e lo indiriziamo a una funzione | # e lo indirizziamo a una funzione |
Linea 75: | Linea 76: |
self.bottone = gtk.Button("Calcolo") # definisco il bottone calcolo self.bottone.connect("clicked", self.calcola) # catturo il click e lo indirizzo |
self.bottone = gtk.Button("Calcolo") # definiamo il bottone calcolo self.bottone.connect("clicked", self.calcola) # catturiamo il click e lo indirizzo |
Linea 81: | Linea 82: |
self.riga1 = gtk.HBox() # creo un contenitore dove | self.riga1 = gtk.HBox() # creiamo un contenitore dove |
Linea 83: | Linea 84: |
self.riga1.pack_start(self.etichetta1) # inserisco l'ediachetta e la casella di input nella 1 riga | self.riga1.pack_start(self.etichetta1) # inseriamo l'etichetta e la casella di input nella 1 riga |
Linea 95: | Linea 96: |
self.risultato = gtk.Label(" -- ") # creo un'etichetta per il risultato self.colonna = gtk.VBox() # creo un contenitore dove |
self.risultato = gtk.Label(" -- ") # creiamo un'etichetta per il risultato self.colonna = gtk.VBox() # creiamo un contenitore dove |
Linea 98: | Linea 99: |
self.colonna.pack_start(self.riga1) # e inserisco le righe, il pulsante e l'etichetta del risultato | self.colonna.pack_start(self.riga1) # e vi inseriamo le righe, il pulsante e l'etichetta del risultato |
Linea 103: | Linea 104: |
self.window.add(self.colonna) # inserisco il tutto nella finestra self.window.show_all() # comando ce visualizza la finestra ed il suo contenuto |
self.window.add(self.colonna) # inseriamo il tutto nella finestra self.window.show_all() # comando che visualizza la finestra ed il suo contenuto |
Python GUI
Ci sono un gran numero di toolkit disponibili per creare interfacce grafiche (GUI) con Python, da Tkinter (già compresa nella installazione di Python che consente l'interfaccia con X-Windows) a numerose altre multipiattaforma o specifiche per un certo ambiente.
Tra le più utilizzate citiamo wxPython, PyGTK e PyQt, ma altre possiamo trovarle qui:
http://wiki.python.org/moin/GuiProgramming
PyGTK
GTK+ (acronimo che sta per GIMP Tool Kit) è un toolkit (insieme di strumenti) per la creazione di interfacce grafiche. Il toolkit è stato progettato inizialmente come ausilio alla programmazione per il programma GIMP è diventato una parte fondamentale dell'ambiente GNOME.
PyGTK è un set di moduli che permettono l'interfaccia tra Python e le librerie GTK, è un toolkit orientato agli oggetti, permette quindi la possibilità di riusare lo stesso codice in più applicazioni, è stato portato ai Python coders da James Henstridge in collaborazione con un team di developers volontari. Nell'installazione standard di Ubuntu è già presente tutto il necessario.
Il sito ufficiale (in inglese) di PyGTK e':
La documentazione in italiano si trova qui:
http://www.parafernalia.org/pygtk/
Esempio di applicazione
Questa è una versione del programma AreaTriangolo2.py del wiki LinguaggioPython che usa le GUI GTK+:
1 #!/usr/bin/python
2
3 # Importiamo la funzione sqrt (radice quadrata) dal modulo math
4 from math import sqrt
5 # Importiamo le librerie per l'interfaccia grafica GTK
6 import pygtk
7 pygtk.require('2.0')
8 import gtk
9
10 # Definiamo una classe Triangolo con tre metodi:
11 # un costruttore, un metodo che calcola il perimetro e uno che calcola l'area del triangolo.
12 class Triangolo:
13
14 # Attributi della classe (le misure dei tre lati)
15 a, b, c = 0, 0, 0
16
17 # Metodo costruttore, in python i costruttori hanno il nome speciale __init__
18 def __init__(self,a,b,c):
19 # Controlliamo se i tre valori dati possono effettivamente
20 #essere le misure dei lati di un triangolo.
21 # Caso contrario solleviamo una bella eccezione!
22 if ((a+b>c) and (a+c>b) and (b+c>a)):
23 self.a=a
24 self.b=b
25 self.c=c
26 else:
27 raise "TriangoloImpossibile" , "I lati non possono formare un triangolo"
28 # abbiamo dato un nome ed un essaggio di errore all'eccezione
29 # Metodo che calcola il perimetro
30 def perimetro(self):
31 return self.a + self.b + self.c
32
33 # Metodo che calcola l'area (tramite formula di Erone)
34 def area(self):
35 p=self.perimetro()/2.0
36 return sqrt(p*(p-self.a)*(p-self.b)*(p-self.c))
37
38 #questa e' la classe che definisce l'interfaccia grafica
39 class Dialogo:
40 def __init__(self):
41 self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) # definiamo la finestra
42 self.window.set_title("Calcolo area triangolo")# le diamo in titolo
43 self.window.connect("destroy", self.distruggi) # catturiamo l'evento destroy
44 #(es. la X che chiude la finestra)
45 # e lo indirizziamo a una funzione
46 # che termina il programma
47 self.window.set_resizable(False) # la finestra non e' modificabile in dimensioni
48 self.window.set_position(gtk.WIN_POS_MOUSE) # e compare nell'attuale posizione del muose
49 self.bottone = gtk.Button("Calcolo") # definiamo il bottone calcolo
50 self.bottone.connect("clicked", self.calcola) # catturiamo il click e lo indirizzo
51 # alla funzione che esegue il calcolo
52 self.etichetta1 = gtk.Label("Lato 1 ") # testo che richiede la lunghezza del 1 lato
53 self.entrata1 = gtk.Entry(10) # casella per l'inserimento della lunghezza
54 # del 1 lato
55 self.riga1 = gtk.HBox() # creiamo un contenitore dove
56 # gli oggetti sono disposti in orizzontale (una riga)
57 self.riga1.pack_start(self.etichetta1) # inseriamo l'etichetta e la casella di input nella 1 riga
58 self.riga1.pack_start(self.entrata1)
59 self.etichetta2 = gtk.Label("Lato 2 ") # e cosi' via ...
60 self.entrata2 = gtk.Entry(10)
61 self.riga2 = gtk.HBox()
62 self.riga2.pack_start(self.etichetta2)
63 self.riga2.pack_start(self.entrata2)
64 self.etichetta3 = gtk.Label("Lato 3 ")
65 self.entrata3 = gtk.Entry(10)
66 self.riga3 = gtk.HBox()
67 self.riga3.pack_start(self.etichetta3)
68 self.riga3.pack_start(self.entrata3)
69 self.risultato = gtk.Label(" -- ") # creiamo un'etichetta per il risultato
70 self.colonna = gtk.VBox() # creiamo un contenitore dove
71 # gli oggetti sono disposti in verticale (una colonna)
72 self.colonna.pack_start(self.riga1) # e vi inseriamo le righe, il pulsante e l'etichetta del risultato
73 self.colonna.pack_start(self.riga2)
74 self.colonna.pack_start(self.riga3)
75 self.colonna.pack_start(self.bottone)
76 self.colonna.pack_start(self.risultato)
77 self.window.add(self.colonna) # inseriamo il tutto nella finestra
78 self.window.show_all() # comando che visualizza la finestra ed il suo contenuto
79
80 # funzione che raccoglie gli input, crea un'istanza Triangolo e ne richiede il calcolo dell'area
81 def calcola(self, widget,data = None):
82 try:
83 a = float(self.entrata1.get_text()) # legge i dati inseriti nella 1 casella
84 b = float(self.entrata2.get_text())
85 c = float(self.entrata3.get_text())
86 triangolo = Triangolo(a, b, c)
87 self.risultato.set_text(str(triangolo.area()))
88 except ValueError: # catturo l'eccezione
89 self.risultato.set_text("Devi inserire valori numerici.")
90 except "TriangoloImpossibile": # catturo la seconda eccezione
91 self.risultato.set_text("I lati immessi non possono formare un triangolo")
92 # funzione di uscita
93 def distruggi(self, widget,data = None):
94 print data
95 return gtk.main_quit()
96 # funzione di lancio della GUI
97 def main(self):
98 gtk.main()
99
100 # avvio del programma a condizione che non sia caricato come modulo
101 print __name__
102 if __name__ == "__main__":
103 base = Dialogo()
104 base.main()
Listato del programma AreaTriangolo2.py con interfaccia grafica GTK+BRBR