문제

나는 일반적으로 전환 작업을 수행하기 위해 파이썬 스코프를 작성하고 시간이 걸리는 것을 쓸 때 마다이 작은 진행률 막대를 사용하여 확인합니다.

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_()

두 가지 질문이 있습니다.

100%에 도달하면 어떻게 닫히게합니까 (열린 상태로 유지되고 X 버튼을 클릭하기 전에 파이썬 쉘을 닫으면 충돌합니다.)

또한 초점을 잃고 회복하면 페인팅이 올바르게 멈 춥니 다. 프로세스는 계속 완료되지만 진행률 막대 공간은 모두 흰색입니다. 이것을 어떻게 처리합니까?

도움이 되었습니까?

해결책

글쎄, 최대 10으로 설정하기 때문에 진행률 표시 줄은 100%에 도달하지 않아야합니다.

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

최대 9 개만 반복합니다.

진행 막대는 자동으로 닫히지 않습니다. 당신은 전화해야합니다

barra.hide()

루프 후.

페인트 문제에 관해서는,이 스크립트를 실행 한 스크립트가 진행률 막대와 같은 스레드에 있기 때문에 가능성이 있습니다. 따라서 스위치 및 후퇴 할 때는 부모 스크립트의 실제 처리로 페인트 이벤트가 지연됩니다. 'barra'에서 .update () 또는 .repaint ()를 주기적으로 호출하도록 타이머를 설정할 수 있습니다 (update ()는 retaint ()를 통해 권장됩니다. 또는 PYQT 코드에서도 사용할 수있는 QTHREAD에서 기본 처리 코드가 실행되기를 원하지만 귀하의 부분에는 일부 읽기가 필요합니다 :)

문서는 QT를위한 것이지만 PYQT에도 적용됩니다.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top