【发布时间】:2014-08-22 14:06:08
【问题描述】:
有没有办法从 pyqt4 中的类方法创建信号,而不是总是使用实例方法?
我有一个包装类,用于包装和存储 QLineEdit 和 QCheckBox 组合之间的状态。该类将 QLineEdit 中的所有值汇总到一个类变量中。如果未选中 QCheckBox,则从总和中扣除相关行编辑的值。如果用户编辑 QLineEdit,则扣除旧值并添加新值。我想在每次从类级别更改时发出更新的值。
现在我正在做的是传入 QLineEdit 实例,我将值转储到其中并通过所有包装器实例连接它。
我想做的是让下面的代码 sn-p 工作。
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))
【问题讨论】: