Таймер на pyqt5
Кнопка "+" создаёт новый таймер. Кнопка start запускает таймер на кол-во секунд указанных в строке line. Почему программа крашится при нажатии кнопки stop?
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class Timer:
def __init__(self, parent, i):
self.line = QLineEdit(parent)
self.Start = QPushButton("start", parent)
self.line.setPlaceholderText("set time")
self.Start.clicked.connect(self.startClick)
self.line.move(0, i)
self.Start.move(100, i)
self.line.show()
self.Start.show()
def startClick(self):
if self.Start.text() == "start":
try:
self.Start.setText("stop")
self.timer = QTimer()
self.timer.timeout.connect(self.timeOut)
self.timer.start(int(self.line.text())*1000)
except:
self.line.clear()
self.line.setPlaceholderText("invalid number")
else:
self.timer.timeOut()
def timeOut(self):
self.line.clear()
self.line.setPlaceholderText("time out")
self.Start.setText("start")
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.show()
self.arr = []
self.i = 0
self.btn = QPushButton("+", self)
self.btn.clicked.connect(self.btnClick)
self.btn.show()
def btnClick(self):
self.i += 30
self.arr.append(Timer(self, self.i))
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: Тимон Яблоков
→ Ссылка
Как я сразу не заметил:
def startClick(self):
if self.Start.text() == "start":
try:
self.Start.setText("stop")
self.timer = QTimer()
self.timer.timeout.connect(self.timeOut)
self.timer.start(int(self.line.text())*1000)
except:
self.line.clear()
self.line.setPlaceholderText("invalid number")
else:
self.timeOut() #! а не self.timer.timeOut()