我正在使用PySide,并在辅助线程上运行下载,因此用户界面无法阻止。
它基本上只是一个按钮,可以在新线程上开始下载并将文件保存到磁盘。我想要取消"取消"停止下载的按钮。我已经找到了阻止线程的方法,但它们似乎是hackish,看起来像是不应该做的事情。
如果线程停止是hackish,那么这样做的正确方法是什么?它显然是在数百种软件中完成的。也许带着旗帜?我的帖子看起来像这样。一旦它开始,我就不知道如何"暂停"它或停止它。
goOn = True
def MyThread(threading.Thread):
def __init__(self, url):
super().__init__(self)
self.url = url
def run(self):
data = urllib.request.urlopen(self.url)
f = open('fileName', 'wb')
size = int(data.headers['Content-Length'])
downloaded = 0
blockSize = 1024 * 8
while True:
buffer = data.read(blockSize)
if not buffer:
break
f.write(buffer)
downloaded += blockSize
'''
if not goOn: # Something like this?
break
'''
感谢。
答案 0 :(得分:1)
def MyThread(threading.Thread):
def __init__(self, url):
super().__init__(self)
self.url = url
def run(self):
data = urllib.request.urlopen(self.url)
f = open('fileName', 'wb')
size = int(data.headers['Content-Length'])
downloaded = 0
blockSize = 1024 * 8
self.running = 1
while self.running:
buffer = data.read(blockSize)
if not buffer:
break
f.write(buffer)
downloaded += blockSize
def stop_running(self):
self.running =0
我认为应该工作......