Обновление списка - PullRequest
       4

Обновление списка

1 голос
/ 30 апреля 2011

Когда я запускаю это, он отображает только процент после завершения загрузки, так есть ли способ, чтобы он отображался при загрузке?

listbox = Listbox(Admin)
listbox.grid(row=19, column=9)
def download0(runums, song):

    chunks = 10000
    dat = ''
    runum = runums.replace(' ', '%20')
    url = runum
    down = urlopen(url)
    downso = 0
    tota = down.info().getheader('Content-Length').strip()
    tota = int(tota)
    while 1:
        a = down.read(chunks)
        downso += len(a)

        if not a:
            break
        dat += a
        percent = float(downso) / tota
        percent = round(percent*100, 1)

        sys.stdout.write(str(percent))
        sys.stdout.flush()

        sys.stdout.write("\b"*4)
        listbox.insert(END, percent)

1 Ответ

1 голос
/ 30 апреля 2011

Цикл событий Tkinter (запущенный mainloop()) выполняется в одном потоке. Он вращается, реагирует на события (например, щелчки мыши), перерисовывает виджеты и так далее. При нажатии кнопки, чтобы начать загрузку, управление передается вашей функции download0(). Пока управление не вернется в цикл обработки событий, никакие виджеты не будут перерисовываться, если вы не скажете им.

Итак, пока идет загрузка, вам нужно указать виджету перерисовать себя:

listbox.insert(END, percent)
listbox.update_idletasks()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...