2010-08-03 12 views
2

GUI가있는 파일 다운로더를 작성하려고하는데 다운로드중인 파일의 진행 상태를 표시합니다. 텍스트 백분율, 진행률 표시 줄 또는 둘 다를 표시하고 싶습니다. 나는 이것이 파이썬에서 할 수 있다고 확신하지만, 나는 어떻게 확신 할 수 없다.GUI 진행 표시가있는 파일 다운로드 프로그램?

MS Windows XP에서 Python 2.6을 사용하고 있습니다.

답변

3

가장 쉬운 진행 표시 줄 대화 상자가 아마 EasyDialogs for Windows 함께있을 것입니다 함께 urllib.urlretrieve()를 사용, 다운로드의 진행을 결정하기위한

(파이썬의 맥 버전에 포함되어있는 EasyDialogs 모듈과 동일한 API를 다음과)는 " reporthook ". 이 같은

뭔가 :

이 풍부한 GUI 인터페이스를 사용할 수 물론 다른 라이브러리의이다 (그러나 이것이 당신이 필요로하는 모든 경우 더 크거나 더 어렵습니다)
import sys 
from EasyDialogs import ProgressBar 
from urllib import urlretrieve 

def download(url, filename): 
    bar = ProgressBar(title='Downloading...', label=url) 

    def report(block_count, block_size, total_size): 
     if block_count == 0: 
      bar.set(0, total_size) 
     bar.inc(block_size) 

    urlretrieve(url, filename, reporthook=report) 

if __name__ == '__main__': 
    url = sys.argv[1] 
    filename = sys.argv[2] 
    download(url, filename) 

. 다운로드에도 동일하게 적용됩니다 : urllib보다 빠른 것 일지 모르지만 이것은 쉽고 stdlib에 포함되어 있습니다.

+0

이 코드를 보내 주셔서 감사합니다. 그것은 매우 유용하다는 것을 증명합니다. 그러나 몇 가지 다른 질문이 있습니다. 1). 파일을 어디에 저장합니까? 나는 활성 디렉토리에서 가정합니까? 2). 이것을 Tkinter 창에 어떻게 통합시킬 수 있습니까? –

+0

몇 가지 수정을했고이 코드는 완벽하게 작동했습니다! 감사!! –

+0

그래, 코드를 사용하고 있지만 코드가 완료된 후에는 진행률 표시 줄 대화 상자가 닫히지 않습니다. 그럼, 난 그때 urlretrieve 라인,하지만 난 델 바를 넣어 다음 오류가 계속 : "중첩 범위에서 참조 된 변수 '막대'를 삭제할 수 없습니다 나는 주위를 움직이려고했지만 솔루션을 찾을 수 없습니다. –

관련 문제