-
pieranpy.
User deleted
Questo mio primo post č essenzailmente una presentazione, alla quale accedo con un vassoio carico di un piccolo problema che ho riscontrato nell'inserimento dell'ambiente grafico nel mio primo programma in python.
La mia esperienza in programmazione č cominciata quando i pc non erano ancora stati inventati ed esistevano solo gli elaboratori con 32 KB di ram, elaboratore che occupavano , assieme alle periferiche spazi enormi. Con l'avvento dei pc desktop, il mio interesse per il mondo della programmazione č aumentato ed ho conosciuto, per uso personale, il Basic, poi il Visual Basic ed infine, quando, sei anni fa, ho installato il primo SO. Linux, ho imparato ad utilizzare Gambas. Qualche mese fa mi ha incuriosito la possibilitā di potere scrivere programmi con un linguaggio multipiattaforma. Mi sono cosė affacciato al mondo Python.
Con Python ho cominciato a scrivere, su Linux-Ubuntu, il mio programma. Pur volendo puntare all'utilizzo della GUI per interfacciare il programma con l'utente, il primo input č stato realizzato a riga di comando. Fatta detta prima esperienza ho voluto fare indossare al mio miniprogramma un vestito grafico; mi sono perciō rivolto aTkinter, la GUI naturale di Python. La prima finestra, gestita dentro la classe d'avvio contiene solamente la barra-dei-menų ed un widget, sottostante a detta barra, attualmente vuoto·
In uno dei menų dell'omonima barra, ho inseriro un'istruzione di richiamo di una nuova classe avente il compito di accogliere l'input di una serie di dati dall'immissione manuale da parte dell'utente. Ebbene codesta nuova classe non si avvia, Le istruziooni utilizzate sono le seguenti:HTMLdef __init__(self, quadro_avvio):
#---------------- omesse righe contenenti estranee al problema -------
mGiocatori = Menu(barraMenu, tearoff=0) barraMenu.add_cascade(label="Giocatori",
menu=mGiocatori, font = ("arial", 11))
mIns_giocatori = Menu(mGiocatori, tearoff=0)
mGiocatori.add_command(label="Inserimento", command=lambda : self.ins_giocatori)
si dovrebbe avviare a questo punto la funzione ins_giocatori, definita pių sopra, nel programma:HTMLdef ins_giocatori():
print "ramo inserimento giocatori in lavorazione"
fIns_giocatori=Tk()
fIns_giocatori.title="Sezione INSERIMENTO GIOCATORI"
giocInser=fInsGiocatori(fIns_giocatori)
fIns_giocatori.mainloop()
print "------ fine lavoro ------"
Come prima ed ultima riga del gruppo di istruzioni, ho inserito una "Print" per capire attraverso la relativa stampa sul terminale shell su cui si appoggia Python che la funzione venga eseguita. Ebbene le print non vengono eseguite, quindi, devo pensare, che la funzione non venga eseguita. Non viene segnalato alcun errore ed il programma č sempre attivo, per cui posso continuare a giocare col click del mouse sulle etichette presenti nella barra-dei-menų.
Pur avendo messo in opera pių tentativi di modifica della riga, secondo me responsabile del malfunzionamento, "mGiocatori.add_command(label="Inserimento", command=lambda : self.ins_giocatori)", non sono mai riuscito a fare eseguire la funzione ins_giocatori. Mi potreste dare una mano?
. -
pieranpy.
User deleted
Mentre aspetto indicazioni, ho provato qualche altra modifica e sono riuscito a proseguire un pochino. Riporto le righe del codice precedente, ma con le modifiche apportate: CODICEdef __init__(self, quadro_avvio):
#---------------- omesse righe contenenti estranee al problema -------
mGiocatori = Menu(barraMenu, tearoff=0) barraMenu.add_cascade(label="Giocatori",
menu=mGiocatori, font = ("arial", 11))
mIns_giocatori = Menu(mGiocatori, tearoff=0)
mGiocatori.add_command(label="Inserimento", command = self.ins_giocatori)
eCODICEdef ins_giocatori(self):
print "ramo inserimento giocatori in lavorazione"
fIns_giocatori=Tk()
fIns_giocatori.title="Sezione INSERIMENTO GIOCATORI"
giocInser=fInsGiocatori(fInsGiocatori)
fIns_giocatori.mainloop()
print "------ fine lavoro ------"
Ora la nuova classe viene avviata ma mi compare un errore, per me incomprensibile:CITAZIONEramo inserimento giocatori in lavorazione
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1413, in __call__
return self.func(*args)
File "calcio.py", line 20, in ins_giocatori
giocInser=fInsGiocatori(fInsGiocatori)
File "/home/pierubu13/mont/dativari/python_vari/python_progetti/avis_calcetto/giocatoriInser.py", line 5, in __init__
fInsGiocatori.geometry("800x600")
AttributeError: class fInsGiocatori has no attribute 'geometry'
il codice corrispondente č il seguente:CODICEclass fInsGiocatori: # Classe che si occupa della digitazione e salvataggio dei datai anagrafici dei giocatori
def __init__(self, fin_insavvio):
fInsGiocatori.geometry("800x600")
#--------- quadro genitore ---------
qIns_giocatori = Frame(f1_insgiocatori)
qIns_giocatori.pack(side=TOP)
#------------------------------------------. -
uomo in verde.
User deleted
SPOILER (clicca per visualizzare)Thread trasferito in una sezione pių appropriata..