PDA

Visualizza la versione completa : [PYTHON]: Interfacce grafiche Tkinter


cirilli89
15-08-2006, 22:06
Ciao sono un ragazzo che studia informatica e dopo aver cominciato a studiare scolasticamente il c/c++, desideravo buttarmi in un nuovo linguaggio il python...
tutto andava liscio fino a quando nn ho avuto problemi con le interfaccie grafiche, in effetti seguendo la guida di questo sito ho provato a creare la seguente interfaccia Tkinter....

questo è il codice prelevato per prova dal vostro sito ...
mi potete spiegare perchè alla fine nn crea l'interfaccia grafica ??? :cry:

codice :

from Tkinter import * # importo il modulo
class Application(Frame):
def scrivi_messaggio(self):
self.mess["text"] = "Ciao a tutti!",
def cancella_messaggio(self):
self.mess["text"] = "",
def __init__(self, master=None):
f = Frame(master)
f.pack()
self.esci = Button(f)
self.esci["text"] = "QUIT"
self.esci["fg"] = "red"
self.esci["command"] = f.quit
self.esci.pack({"side": "left"})
self.butt_mess = Button(f)
self.butt_mess["text"] = "Scrivi",
self.butt_mess["command"] = self.scrivi_messaggio
self.butt_mess.pack({"side": "left"})
self.butt_canc_mess = Button(f)
self.butt_canc_mess["text"] = "Cancella",
self.butt_canc_mess["command"] = self.cancella_messaggio
self.butt_canc_mess.pack({"side": "left"})
self.mess = Message(f)
self.mess["text"] = "",
self.mess.pack({"side": "left"})
finestra = Tk()
app = Application(finestra)
finestra.mainloop()

mi sapete dare una spiegazione ?

andr3a
16-08-2006, 09:16
ho solo indentato il codice ... e a me funziona alla perfezione (Python 2.4)


from Tkinter import *

class Application(Frame):
def scrivi_messaggio(self):
self.mess["text"] = "Ciao a tutti!",
def cancella_messaggio(self):
self.mess["text"] = "",
def __init__(self, master=None):
f = Frame(master)
f.pack()
self.esci = Button(f)
self.esci["text"] = "QUIT"
self.esci["fg"] = "red"
self.esci["command"] = f.quit
self.esci.pack({"side": "left"})
self.butt_mess = Button(f)
self.butt_mess["text"] = "Scrivi",
self.butt_mess["command"] = self.scrivi_messaggio
self.butt_mess.pack({"side": "left"})
self.butt_canc_mess = Button(f)
self.butt_canc_mess["text"] = "Cancella",
self.butt_canc_mess["command"] = self.cancella_messaggio
self.butt_canc_mess.pack({"side": "left"})
self.mess = Message(f)
self.mess["text"] = "",
self.mess.pack({"side": "left"})

finestra = Tk()
app = Application(finestra)
finestra.mainloop()

cirilli89
16-08-2006, 12:50
strano io ho copiato il codice in IDLE (python GUI) ho premuto invio e poi nn ho nessun risultato ....

cosa devo fara dopo che ho inserito il codice ? :confused:

andr3a
16-08-2006, 12:55
scrivere Python in IDLE credo sia un mezzo suicidio ... va bene per dei tests veloci ma ti serve un editor per non avere problemi.

Il notepad per questo test può andare più che bene (copi e incolli in un file di testo e lo salvi come test.py poi lo lanci), ma ce ne sono tanti altri ma non credo sia questo il luogo adatto per parlarne (nel forum di PHP c'è un 3D dedicato agli editors, molti dei quali vanno bene anche per Python)

:ciauz:

cirilli89
16-08-2006, 12:56
strano io ho copiato il codice in IDLE (python GUI) ho premuto invio e poi nn ho nessun risultato ....

cosa devo fara dopo che ho inserito il codice ? :confused:

cirilli89
16-08-2006, 13:30
grazie per il consiglio ... infatti provando come hai detto tu riesco a creare la prima interfaccia .. ma nel caso della seguente mi da un errore .. mi sapresti dire il perchè ?
NELLO SPECIFICO MI SEGNALA L'ERRORE IN : def OnInit(self):

Errore: indentationError: expected an indented block

codice:

from wxPython.wx import *

class MyApp(wxApp): # derivo la classe applicazione
def OnInit(self):
frame = wxFrame(NULL, -1, "Ciao da wxPython") #creo il frame
frame.Show(true) #mostro il frame
return true

app = MyApp(0) # istanzio l'applicazione
app.MainLoop() # faccio partire il loop che gestisce gli eventi

Errore: indentationError: expected an indented block

andr3a
16-08-2006, 19:45
python si basa sui blocchi indentati (per questo è bello anche "da guardare") ... se sei uno che scrive tutto a capo con Python non farai molta strada ...



from wxPython.wx import *

class MyApp(wxApp): # derivo la classe applicazione
def OnInit(self):
frame = wxFrame(NULL, -1, "Ciao da wxPython") #creo il frame
frame.Show(true) #mostro il frame
return true

app = MyApp(0) # istanzio l'applicazione
app.MainLoop() # faccio partire il loop che gestisce gli eventi

cirilli89
17-08-2006, 00:22
grazie per il consiglio .... comunque l'ultimo frammento di codice nn funziona .. perche nn ho scaricato la libreria .... wxPython ....!!!

grazie cmq ....

ciao ... :ciauz:

andr3a
17-08-2006, 09:01
Originariamente inviato da cirilli89
grazie per il consiglio .... comunque l'ultimo frammento di codice nn funziona .. perche nn ho scaricato la libreria .... wxPython ....!!!

... però l'errore era di indentazione :D

cmq le wx sono molto meglio delle Tk :unz:

cirilli89
17-08-2006, 11:40
grazie per il consiglio ....

ah mica puoi consigliarmi qualche manuale di python .... ?

Loading