Eccomi qua, finite le ultime cure al "ContabFam", ho ripreso a studiare Python e devo dire che sono riuscito ad andare avanti: infatti ho potuto aggiungere l'aspetto grafico al mio primo programma Python. Lo stato delle arti presenta ad oggi questa situazione:
1) Ho costruito un modulo a riga di comando in grado di prendere in input alcuni dati ed a registrare un file .txt coi dati registrati.
2) periodo di natalizio = periodo di p-a-u-s-a a base di pasti abbondanti con contorno di dolciumi
3) ho costruito la mia prima Finestra (Form in Gambas) dove ho posizionato una bellissima barra-dei-menù per le successive scelte operative.
4) Ho tentato, ma ancora senza successo di aggiungere una nuova classe corredata di relativa finestra per gestire quello che attualmente funziona solo da riga di comando, in modo da sfruttare così la funzione di intercettazione degli eventi, attraverso la GUI di Tkinter di Python.
A questo stadio del lavoro, il programma è incorso in una condizione di anomalia che non capisco come risolvere. Mi permetto di riportare qui appresso uno scorcio di codice nella speranza di intercettare un 'evento di tipo
"maggiore esperienza pythoniana" per aiutarmi a rialzarmi:
All'interno della classe "Fmain" di avvio del programma, fra le istruzioni di definizione delle righe di selezione del menù a tendina
"giocatori", si riscontrano quelle relative alla riga di selezione
"Inserimento"def __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)
L'ultima di esse dovrebbe avviare la funzione
ins_giocatori, definita correttamente più sopra, nel programma:
def 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ù.
L'unica seleziona che funziona è quella relativa al Menù: File->Esci
mFile = Menu(barraMenu, tearoff=0)
barraMenu.add_cascade(label="File", menu=mFile, font = ("arial", 11) )
mFile.add_command(label="Esci", command=root.quit)
Il comando "quit" contenuto nell'ultima riga viene eseguito correttamente, infatti il programma si chiude e la finestra con la barra-dei-menù scompare.
Qualcuno potrebbe dirmi perchè la funzione
ins_giocatori non viene eseguita?
Ho cercato fra le casistiche persenti sul Web un esempio di programmazione simile a quello scritto da me, ma non l'ho ancora trovato.