刚刚解决了pyqt线程退出问题,特来此记录下解决的想法。以下用一个简单例子来表现如何用signal/slot信号槽来退出线程。
若有一个按钮,点击开始线程,再次点击退出线程,线程的工作为打印a(1-20)然后b(1-20),线程代码如下:
class UpdateThread(QThread):
def __init__(self, parent=None):
super(UpdateThread, self).__init__(parent)
self.flag = 1# 用来判断循环是否继续的标志,通过改变该标志来使得线程中run函数退出
def run(self):
table = ['a', 'b', 'c', 'd ', 'e', 'f', 'g']
for i in range(6):
if self.flag == 1:
print table[i]
for m in range(20):
print m
time.sleep(0.5)
else:
break
print 'close'# 输出标明线程run函数已经退出
def stop(self):
print 'setting flag false'