2016-07-19 186 views
7

Sto usando una piccola app per Python chiamata Pythonista che mi permette di cambiare il colore del testo su cose ogni pochi secondi. Ecco un esempio di come ho cercato di fare questo in un ciclo infinito;Python: Fai qualcosa poi dormi, ripeti

while True: 
    v['example'].text_color = 'red' 
    time.sleep(0.5) 
    v['example'].text_color = 'blue' 
    time.sleep(0.5) 
    # and so on.. 

Il problema qui è che questa si blocca il mio programma perché Python continua a dormire più e più volte, e non ho mai visto alcun cambiamento. C'è un modo di essere in grado di vedere il cambiamento (il testo cambia in rosso/blu/etc) e poi fare il prossimo compito x quantità di tempo dopo, e così via?

+12

È necessario esaminare * * multithreading. Le tue attività sono tutte in esecuzione in un thread, inclusa la grafica. Quando dici 'dormire', poi ** tutto ** dorme. Quello che vuoi fare è mettere il tuo loop in un thread separato con callback asincroni per garantire l'esecuzione continua senza interrompere il flusso del resto del programma. –

+0

@PierceDarragh Lo farà, grazie –

+0

Nessun problema! Ci sono tonnellate di tutorial online e molti post qui su SO. Buona fortuna! :) –

risposta

2

Sarà necessario creare un nuovo thread che esegua il codice. Inserire il codice nel proprio metodo una_qualche_funzione() e quindi avviare un nuovo thread come questo:

thread = Thread(target = some_function) 
thread.start() 
Problemi correlati