Forum >> Principianti >> Script innestati

Pagina: 1

Buon pomeriggio a tutto il forum.
Ho un problema di cui non riesco a trovarne la soluzione. Anche in rete non riesco a trovare nulla, forse non riesco a trovare le parole esatte da inserire nella query.

Nel filmato https://www.youtube.com/watch?v=Ts0eip3M75k il programmatore intorno al tempo 17:50 usa la tecnica riportata di seguito. La prima volta che dal primo script chiamo i secondo funziona perfettamente. Dal secondo chiamo il primo il funzionamento è ancora perfetto. Nella seconda chiamata dal primo script verso il secondo avviene l'uscita da tutto.




Grazie per l'aiuto che potrete darmi.

f_due_schermate_primo.py
from tkinter import *

class Appprincipale:
	def __init__(self,root):
		self.root = root
		button1 = Button(self.root,text="AVANTI",command=self.avanti)
		button1.pack()

	def avanti(self):
		self.root.destroy()
		import f_due_schermate_secondo
root = Tk()
app = Appprincipale(root)
root.mainloop()

f_due_schermate_secondo.py

from tkinter import *

class Appsecondario:
	def __init__(self,root):
		self.root = root
		button1 = Button(self.root,text="INDIETRO",command=self.indietro)
		button1.pack()

	def indietro(self):
		self.root.destroy()
		import f_due_schermate_primo
root = Tk()
app = Appsecondario(root)
root.mainloop()


--- Ultima modifica di py2021thon in data 2021-10-16 19:05:37 ---

--- Ultima modifica di py2021thon in data 2021-10-16 19:11:07 ---

--- Ultima modifica di py2021thon in data 2021-10-16 19:36:03 ---

--- Ultima modifica di py2021thon in data 2021-10-16 19:36:30 ---
qui mancano i rientri, quindi non si capisce benissimo quello che vuol dire quel codice... ma sembra un pasticcio completo... guarda, gli import non si usano semplicemente così. Quello che puoi fare è definire una classe in un modulo, e poi importarla, istanziarla e usarla in un altro modulo... questo sicuramente. Ma avere due moduli che si importano a vicenda... ciascuno che avvia e poi ferma un mainloop... no, proprio questo non è il modo sano di scrivere del codice. Ti suggerisco di lavorare prima con le basi di python, studiando su un buon libro (il Lutz è sempre una scelta valida), e soltanto dopo fare qualcosa con tkinter e le gui in generale.




Ciao RicPol,
ho riscritto il codice nel primo messaggio(Pensavo che come l'avevo scritto la prima volta andasse bene).

Come ho accennato, ho visto l'uso di questa tecnica in un filmato su youtube e ho quindi provato a replicarla in due moduli molto semplici. Se vedi l'esempio riportato nel filmato la chiamata avviene solo una volta e funziona. Questo funziona anche a me, ma la seconda volta che faccio la stessa chiamata l'applicativo esce. Ho pensato che mancasse qualche cosa in uno dei due moduli o in entrambi.

Siccome l'obiettivo finale dell'esempio riportato nel filmato è la connessione ad un DB non viene visualizzato l'intero codice dei moduli usati e quindi ho pensato che mancasse qualche istruzione nel mio codice.

Se poi mi dici che non è il modo giusto di scrivere il codice anche questo mi va bene, ma avendo trovato tale filmato e avendo iniziato da poco a vedere il funzionamento di Python ho dato per scontato che chi ne sa più di me merita di essere valutato. Per fare questa valutazione ho voluto testare quella parte di codice che mi aveva colpito. E' chiaro che in rete c'è tutto di più(e molto spesso di meno) ma sto cercando di valutare tutto il materiale che trovo.




Grazie per il consiglio che mi hai fornito relativo al libro da studiare.
non sono sicuro di quel link che hai mandato... a me si apre una cosa che non riesco bene a capire... boh.


Comunque sì, il problema dei video su YT è che... peschi a caso cose di qualità molto varia (eufemismo).


Ora, non dico che non si possano fare accrocchi molto complicati in quel modo lì, ma poi il problema è che hai errori strani come quello che riporti... e per carità, uno potrebbe anche mettersi lì a spiegare nel dettaglio come mai succede quello che succede, ci metterebbe tre o quattro ore, e alla fine servirebbe a ben poco. Se non hai chiaro l'inquadramento generale di che cosa è un modulo, che cosa è un modulo eseguibile (uno script), come funzionano gli "import"... tutto poi diventa un gioco a indovinare.


Il consiglio che provo sempre a dare in questi casi (e che non viene mai seguito, intendiamoci) è di lasciar perdere tkinter, lasciar perdere i database, lasciar perdere l'architettura del codice... e studiare partendo dalle basi, con calma, seguendo un buon libro (il Lutz è sempre una scelta raccomandabile).

Ti ringrazio per i consigli e per la spinta all'acquisto.
Bel mattone ... bel(llissimo) prezzo. Anche a detta di molti altri è una pietra miliare dell'argomento.

Incrocio le dita e mi butto a leggerlo.


Pagina: 1



Esegui il login per scrivere una risposta.