Pregunta

Me comúnmente escribo scipts Python a hacer las tareas de conversión para mí y cada vez que escribo una que lleva un tiempo utilizo esta pequeña barra de progreso para comprobar en ella

import sys
import time
from PyQt4 import QtGui
app = QtGui.QApplication(sys.argv)
barra = QtGui.QProgressBar()
barra.show()
barra.setMinimum(0)
barra.setMaximum(10)
for a in range(10):
    time.sleep(1)
    barra.setValue(a)
app.exec_()

Tengo 2 preguntas:

¿Cómo puedo hacer que se cierre en sí cuando se alcanza el 100% (Se queda abierto y si se cierra la concha pitón antes de hacer clic en el botón X que se estrelle.)

Además, cuando se pierde y recupera el foco, deja de pintar correctamente. El proceso continuará hasta su finalización, pero el espacio barra de progreso es todo blanco. ¿Cómo puedo manejar esto?

¿Fue útil?

Solución

Bueno, porque se establece su máximo a 10, la barra de progreso no debe llegar al 100% porque

for a in range(10):
  time.sleep(1)
  barra.setValue(a)

Sólo se repetirá hasta 9.

Las barras de progreso no se cierran automáticamente. Tendrá que llamar

barra.hide()

después de su bucle.

En cuanto al problema de la pintura, lo más probable debido a cualquier script que se ejecutó este script desde está en la misma rosca que la barra de progreso. Así que cuando se pasa de una copia de la pintura y los acontecimientos se retrasan por el procesamiento real de la escritura matriz. Puede configurar un temporizador para llamar periódicamente .Update () o .repaint () en 'barra' (update () se recomienda más de repinte ()) o usted quiere que su código de procesamiento principal para ejecutar en un QThread, que también está disponible en el código PyQt, pero eso requerirá un poco de lectura de su parte:)

El documento es para Qt, pero se aplica a PyQt así:

https://doc.qt.io/qt-4.8/threads.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top