Есть ли способ создать сигнал из метода класса в pyqt4, а не всегда использовать методы экземпляра?
У меня есть класс-оболочка, который упаковывает и сохраняет состояние между комбинацией QLineEdit и QCheckBox. Класс суммирует все значения в QLineEdit в переменной класса. Если флажок QCheckBox не установлен, значение редактирования соответствующей строки вычитается из суммы. Если пользователь редактирует QLineEdit, старое значение вычитается, а новое значение добавляется. Я хочу выдавать обновленное значение каждый раз, когда оно изменяется с уровня класса.
Прямо сейчас я передаю экземпляр QLineEdit, в который я выгружаю значение, и соединяю его со всеми экземплярами оболочки.
Я бы хотел, чтобы следующий фрагмент кода работал.
QtCore.QObject.connect(Wrapper,Wrapper.sum_values_signal, line_edit_instance.setText)
Однако это не так. Вот мой класс-оболочка для справки:
class Wrapper(QtCore.QObject):
sum_values = 0
sum_values_signal = QtCore.pyqtSignal(str)
def __init__(self, line_edit, check_box):
super(QtCore.QObject, self).__init__()
self.check_box = check_box
self.line_edit = line_edit
Wrapper.sum_values += float(line_edit.text())
self.previous_value = float(line_edit.text())
QtCore.QObject.connect(self.check_box,
QtCore.SIGNAL(_fromUtf8("toggled(bool)")),
self.update_sum_values_wrt_check_box)
QtCore.QObject.connect(self.line_edit,
QtCore.SIGNAL(_fromUtf8("textChanged(QString)")),
self.update_sum_values_wrt_line_edit)
def update_sum_values_wrt_check_box(self, toggled):
if toggled is False:
Wrapper.sum_values -= self.previous_value
else:
Wrapper.sum_values += self.previous_value
self.sum_values_signal.emit(text(Wrapper.sum_values))
def update_sum_values_wrt_line_edit(self, string):
Wrapper.sum_values -= self.previous_value
Wrapper.sum_values += float(string)
self.previous_value = float(string)
self.sum_values_signal.emit(text(Wrapper.sum_values))