Поток вопрос

1

поэтому у меня есть код:

from Tkinter import *
from urllib2 import *
import thread
Admin = Tk()
def download():
    def dwnload():
        def Listen():
                os.startfile(filepath)

        chunks = 100000
        dat = ''
        runum = runums.replace(' ', '%20')
        song = '3 rounds and a sound'
        url = 'http://bonton.sweetdarkness.net/music/Blind%20Pilot%20--%203%20Rounds%20and%20A%20Sound.mp3'
        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)


        filepath = 'C:\\WhaleWire\\Downloaded\\' + song + '.mp3'

        local = open(filepath, "wb")
        local.write(dat)
        print '1Done'
    thread.start_new_thread(dwnload, ())
button = Button(Admin, text='Download', command=download)
button.pack()
button = Button(Admin, text='Download', command=download)
button.pack()
Admin.mainloop()

Когда я нажимаю любую из кнопок загрузки, я получаю сообщение об ошибке: Unhandled exception in thread started by <function dwnload at 0x00000000029D4C88>

  • 0
    Есть ли какие-либо подробности о необработанном исключении?
  • 0
    нет, это единственные детали, которые я нашел в ошибке.
Показать ещё 2 комментария
Теги:
tkinter

1 ответ

1
Лучший ответ

thread - это низкоуровневый интерфейс к потокам, я бы предложил использовать threading, что фактически имеет значимые исключения. И убедитесь, что между Tkinter и вашим вторым потоком нет абсолютно никакой конвергенции, потому что блокировка - очень, очень, болезненная вещь.

Мне нужно заблокировать функцию download.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню