Использование Try/except с QTimer

Я использую QTimer для запуска метода, который запускает таймер. Когда я нажимаю QPushButton, мне нужно остановить этот таймер и заняться другими делами. Итак, когда я нажимаю кнопку, я получаю эту ошибку:

TypeError: 'instancemethod' object is not connected

Как я могу использовать метод try-except, чтобы избежать этой ошибки. Вот что я сделал:

def delete(self):
    try:
        self.tmr.timeout.disconnect(self.run_save_clock)
        self.tmr.timeout.disconnect(self.append_Data)
        self.data = []
        self.time_label_2.setText("00:00:00")
        self.data_label.setText("000000")

    except "TypeError: 'instancemethod' object is not connected": #HERE IS WHERE I HAVE THE PROBLEM
        self.tmr.timeout.disconnect(self.append_Data)
        self.data = []
        self.time_label_2.setText("00:00:00")
        self.data_label.setText("000000")

Но это не работает. self.data — это переменная, в которой я сохраняю некоторые данные, пока таймер активен.

Ошибка появляется, когда я сначала нажимаю другой QPushButton, связанный с этим методом:

def stop(self):
    self.saveBtn.setEnabled(True)
    self.stopBtn.setEnabled(False)
    self.tmr.timeout.disconnect(self.run_save_clock)
    self.tmr.timeout.disconnect(self.append_Data)

Что я делаю не так с методом try/except?


person Pablo Flores    schedule 25.05.2016    source источник


Ответы (1)


согласно https://docs.python.org/2/tutorial/errors.html, вы не должны включать строковое сообщение об ошибке сразу после «кроме», а скорее ErrorType, а затем добавить сообщение об ошибке, которое вы хотите вызвать, следующим образом:

try:
    #something

except TypeError:
    #Do something here
    print " 'instancemethod' object is not connected"
    #Or do something here
person glls    schedule 25.05.2016