尊重原创,请读原文
class startThread(QThread): #继承QThread
trigger = pyqtSignal() #创建信号
def __init__(self):
super(startThread, self).__init__()
self.flag = 1 #自定义变量 # 1.
def run(self):
self.flag = 1
if self.flag == 1:
num = 0
while self.flag == 1:
num += 1
time.sleep(1)
print('%s-%s' % (num, self.flag))
else:
self.trigger.emit() # 一旦for循环执行完,就触发这个信号
def stop(self): #重写stop方法
self.flag = 0 # 2.
print('线程退出了')
#按键事件
def btn_start(self):
zt = self.pushButton.text()
if zt == '开始':
self.startthread = startThread()
self.startthread.start() # 启动线程
self.pushButton.setText('停止')
else:
self.pushButton.setText('开始')
self.startthread.stop() # 停止线程
#我只写了停止的方法,暂停其实也简单,增加按钮后跟上面的写法再写一个暂停
#我是一枚小菜鸟,在网站找了好久才弄明白这玩意
解析:
- 声明一个flag变量,初始化为True,在线程run中通过判断flag来判断是否一直执行
- 在QThread的stop方法中改变flag的值为flase,则run部分则不会执行
疑问
但是这样线程应该还是在一直跑着,只是判断的flag为false,没有执行