Every time you press the button you make a new connection, that is independent to the previous ones. This causes that the counter
slot is called multiple number of times, once for each connection. From Qt's documentation:
Every connection you make emits a signal, so duplicate connections emit two signals. You can break a connection using disconnect().
You should set up (i.e. create it and connect timeout
to appropriate slots) the timer only once, and then only start
and stop
it as many times as you need.
Alternatively, the simplest solution for your code is this:
#...
timer1.setInterval(1000)
timer1.disconnect() # removes previous connections
timer1.timeout.connect(lambda: self.counter(15))
timer1.start()
#...