Таймер на 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()
→ Ссылка