2012-07-19 4 views
2

나는 실행하는 데 시간이 걸립니다 명령 프롬프트 명령 (> 5 분) 실행 subprocess.call을 사용하고 있습니다 :소요 시간을 모를 때 QProgressDialog가 나타나게하려면 어떻게해야합니까?

subprocess.call([command, param1, param2], cwd=cwdDir) 

내가이 명령이 실행되고 있음을 보여주기 위해 QProgressDialog를 사용하고 싶습니다. 잠시 후

enter image description here

내 명령이 실행을 완료하고 창을 닫습니다 : 내 프로그램을 실행하면

 progressDialog = QProgressDialog("Executing...", "", 0, 0) 
     progressDialog.setCancelButton(None) 
     progressBar = QProgressBar(progressDialog) 
     progressBar.setMinimum(0) 
     progressBar.setMaximum(0) 
     progressDialog.setBar(progressBar) 
     progressDialog.show() 
     subprocess.call([command, param1, param2], cwd=cwdDir) 
     progressDialog.close() 

는,이 나타나 무엇 :이했다. 창에서 QProgressBar을 볼 수 있도록하려면 어떻게해야합니까?

+0

정확하게 질문을 이해합니까? 문제는 진행 대화 상자가 표시되지 않는 것입니까? –

+0

@ GeorgSchölly 완전히 나타나지 않습니다. 그림에 무엇이 나타나는지, 대화 상자가 나타나지만 그 안의 내용은 나타나지 않습니다. –

+0

'subprocess.call()'이 차단 함수 호출 인 것처럼 보입니다. Qt는 이벤트 루프를 차단하면 (진행 막대와 같은) 아무 것도 칠할 수 없습니다. – Chris

답변

0

프로그램의 이벤트 루프가 차단되지 않도록 Qthread를 사용할 수 있습니다. 그리고 타이머 나 서브 프로세스 콜의 정보를 읽거나 진행 막대에 바쁜 아이콘을 표시하여 진행률 표시 줄의 값을 늘리십시오.

관련 문제