Forum >> Principianti >> Tkinter e cicli for

Pagina: 1 2 Avanti

Creando una finestra tkinter prima di un ciclo for quando eseguo il codice se non chiudo la finestra tkinter non mi attiva il ciclo for perché?? E come faccio a inserire di volta in volta il valore nella finestra tkinter alla fine di ogni ciclo???
Creando una finestra tkinter prima di un ciclo for quando eseguo il codice se non chiudo la finestra tkinter non mi attiva il ciclo for perché?? E come faccio a inserire di volta in volta il valore nella finestra tkinter alla fine di ogni ciclo???
ciao snoop

io ho fatto una prova creando una finestra poi parte il ciclo e alla fine del ciclo il title della finestra riporta il risultato del ciclo e in fine posso chiudere la finestra

quindi da quello che ho capito che intendi fare dovrebbe funzionare.

Tutti i gui framework funzionano così. Una volta avviato il main loop del framework il controllo passa alla gui (cioè al loop degli eventi), e il codice che eventualmente resta dopo non viene eseguito, finché il main loop non termina (di solito perché si chiude l'ultima finestra aperta) e allora il resto del programma può andare avanti.
scusa RicPol e quindi non ci sono soluzioni?
Sì certo, la soluzione è imparare a strutturare il codice di un programma con gui, che non segue il normale "filo logico" di uno script come gli altri. Quando hai una gui, le cose devono essere organizzate per adattarsi al ciclo eventi/callback regolato dal mainloop della gui. Ovviamente avrai separato la logica di business in una serie di classi separate, e la gui vera e propria in un'altra serie di classi. Ma in ultima analisi il layer intermedio (il controller in una logica mcv) in un progamma con gui deve adattarsi al fatto che è la gui ad avere il controllo. In pratica tutto ciò che puoi fare è reagire agli eventi della gui stimolando il tuo controller (e quindi il resto della tua applicazione) nei callback in risposta agli eventi. Se ti serve puoi anche innescare eventi tu stesso, e/o inviare altri segnali ai componenti interessati, ma questo è più raro. In pratica, il 90% della progammazione di gui è la classica catena "l'utente clicca il pulsante -> reagisco con il mio codice nel callback -> il controllo torna alla gui che aspetta la prossima mossa dell'utente".
ecco questo e il codice il mainloop l ho messo prima del ciclo for e forse
è questo il prblema che quando si apre la finestra tk non si attiva il ciclo??
import os
import winsound
from gtts import gTTS
from Tkinter import *
from PIL import ImageTk, Image
import os
import requests
from gtts import gTTS

fiiinniestra = Tk()
fiiinniestra.mainloop()


winsound.PlaySound("la.wav", winsound.SND_FILENAME)



f = open ("giccchi.txt", "r")
g = f.read()
m = g.split(" ")
for parrrola in m:
    if parrrola == "il":
        winsound.PlaySound("il.wav", winsound.SND_FILENAME)
    if parrrola == "lo":
        winsound.PlaySound("lo.wav", winsound.SND_FILENAME)
    if parrrola == "la":
        winsound.PlaySound("la.wav", winsound.SND_FILENAME)
    if parrrola == "i":
        winsound.PlaySound("i.wav", winsound.SND_FILENAME)
    if parrrola == "gli":
        winsound.PlaySound("gli.wav", winsound.SND_FILENAME 

Sì certo. Te l'ho già spiegato.


Uhm, ho paura che ci sia un problema a monte qui. Se vuoi imparare a programmare, procedi per gradi magari seguendo un buon libro. Tkinter e le gui in generali sono troppo avanzate, ti consiglio di lasciar stare per il momento.

ecco questo e il codice il mainloop l ho messo prima del ciclo for e forse
è questo il prblema che quando si apre la finestra tk non si attiva il ciclo??
import os
import winsound
from gtts import gTTS
from Tkinter import *
from PIL import ImageTk, Image
import os
import requests
from gtts import gTTS

fiiinniestra = Tk()
fiiinniestra.mainloop()


winsound.PlaySound("la.wav", winsound.SND_FILENAME)



f = open ("giccchi.txt", "r")
g = f.read()
m = g.split(" ")
for parrrola in m:
    if parrrola == "il":
        winsound.PlaySound("il.wav", winsound.SND_FILENAME)
    if parrrola == "lo":
        winsound.PlaySound("lo.wav", winsound.SND_FILENAME)
    if parrrola == "la":
        winsound.PlaySound("la.wav", winsound.SND_FILENAME)
    if parrrola == "i":
        winsound.PlaySound("i.wav", winsound.SND_FILENAME)
    if parrrola == "gli":
        winsound.PlaySound("gli.wav", winsound.SND_FILENAME 


scusa snoop ma il "mainloop" non dovrebbe andare alla fine?

ps ma il codice continua "credo" anche perchè se la finestra non ha pulsanti o altro non vedo la necessità
E come faccio di volta in volta a inserire il valore del ciclo for in una label o button
appunto ho scritto "credo" che il codice continui perchè in quello che hai postato non vedo input


Pagina: 1 2 Avanti



Esegui il login per scrivere una risposta.