count = 1
count = 2
…
Когда задача завершается, если опять нажать на goButton, то стартует почему-то 2 одинаковых потока, которые печатают одновременно:
count = 1
count = 1
count = 2
count = 2
…
После каждого нажатия стартует на 1 поток больше. А нужно чтобы стартовало всего 1 единственный поток.
Прилагаю код, составленный для того чтобы показать как выглядит затея. Оригинал несколько больше :)
#worker.py
import time
from PyQt4 import QtCore
class Worker(QtCore.QThread):
def __init__(self):
QtCore.QThread.__init__(self)
def setVar(self, var):
self.variable = var
def run(self):
if self.variable == "print":
self.doPrint()
def doPrint(self):
count = 0
while True:
if count = 10:
break
count += 1
print("count = " + str(count))
time.sleep(1)
-------
#main.py
from worker import Worker
from PyQt4 import QtCore, QtGui
from Ui_form import Ui_MainForm
class MyForm(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.ui = Ui_MainForm()
self.ui.setupUi(self)
self.workerThread = Worker()
self.ui.goButton.clicked.connect(self.goButton_OnClick)
def goButton_OnClick(self):
if self.workerThread.isRunning():
return
self.workerThread.setVar("print")
self.workerThread.start()
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
mainform = MyForm()
mainform.show()
sys.exit(app.exec_())