Ciao a tutti, ho un problema un pò singolare con Python. Devo fare in modo che una funzione venga iterata un tot. di volte, in modo però che ogni esecuzione sia ritardata di un tot. di millisecondi rispetto alla precedente. Fra le varie soluzioni che ho provato questa mi pare quella che si avvicina di più a quello che voglio io:

from Tkinter import *

def run():
[...]

pos=0
while pos<=30:
top.after(10,func=run)
pos=pos+1
"top" è una finestra toplevel creata con Tkinter, e "after" è la funzione che ritarda l'esecuzione di un comando (nel mio caso la funzione run) di un tot. di millesecondi (è simile a time.sleep). "run" è la funzione di cui dev'essere ritardata l'esecuzione. Questo metodo però non funziona, perché l'istruzione after non blocca l'esecuzione del while: mi serve qualcosa che ne blocchi temporaneamente l'esecuzione.

Così, ho provato a fare questo:

from Tkinter import *

def go():
global start
start=0

start=1
top=Tk()
top.after(1000,func=go)
while 1:
if start==0:
break
Nella mia idea, il "while 1:" dovrebbe creare un loop e, in teoria, dopo 1000 msec, il valore di start dovrebbe diventare 0 e il while verrebbe bloccato. In pratica non è così, perché sembra che l'istruzione after non venga affatto eseguita a causa del loop.

Non so se son riuscito a rendere l'idea...

Avevo già creato questa funzione in Tcl/Tk, e lì usavo l'istruzione vwait, che in Tkinter sembra non esserci (ma spero di sbagliarmi).

Qualcuno ha qualche suggerimento?