Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [wxPython] Problema con label

    ciao a tutti!
    quando premo su un bottone lancio questa funzione:
    codice:
       def download(self, strUrl):
            self.lblWait.SetLabel("Wait...")
            subprocess.call([..........l])
            self.txtUrl.SetValue("")
            self.lblWait.SetLabel("Finished")
    funziona tutto tra la prima chiamata a SetLabel.
    poi tutte le altre istruzioni sott non hanno problemi.
    sapete dirmi il perchè?

  2. #2
    Non conosco bene le wxPython, ma probabilmente deriva dal fatto che la SetLabel aspetta il successivo evento di ridisegno prima di aggiornare effettivamente il testo, ma la subprocess.call è bloccante, per cui il message loop resta bloccato nel frattempo e il testo dell'etichetta quindi non viene aggiornato. La cosa più semplice può essere dare una
    codice:
    self.lblWait.Update()
    subito dopo la prima SetLabel. Nota comunque che, per tutta la durata della subprocess.call, l'interfaccia rimarrà comunque bloccata.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    si che rimane bloccata me ne sono accorto.
    è per questo che volevo mettere da qualche parte un messaggio di avvertimento che sta in effetti succedendo qualcosa.
    intanto ero partito con un semplice Wait su una label.
    appena posso provo come mi hai detto.
    intanto grazie!

  4. #4
    L'alternativa è usare, invece di subprocess.call, la classe subprocess.Popen, che ti consente di creare un processo senza attendere la sua terminazione, in modo da mantenere in funzione la GUI; per sapere quando il processo è terminato ti basta quindi richiamare ciclicamente il metodo poll dell'oggetto Popen.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    usare Update come hai detto tu ha funzionato.

    per quanto riguarda il secondo suggerimento, per ora mi va bene che la gui si blocchi.
    ma lo terrò a mente per le prossime idee che mi vengono in mente.

    grazie!!!

  6. #6
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.