假设我有两个 QspinBoxes,如果我更新 spinBox_1,第二个将显示这个值的两倍。如果我更新 spinBox_2 第一个将显示该值的一半。使用on_valueChanged1
andon_valueChanged2
和相互连接之类的两种方法SIGNAL("valueChanged(int)")
在这里可以正常工作。更改 1 调用更改 2 的方法,然后更改并再次调用 1。幸运的是,事情在这里停止了,因为因子 2 和 1/2 的选择成功了,所以第二个值实际上并没有改变。如果选择其他值,这将导致几乎无限的调用和召回。
解决这个问题的 Pythonic 方法是什么。我会disconnect
在更改后一次SIGNAL
又一次connect
,还是有一个我看不到的解决方案?
更新
一个工作示例的片段,hasFocus()
如下所示:
QMainWindow.connect(self.ui.doubleSpinBox,SIGNAL("valueChanged(double)"),self.on_change1)
QMainWindow.connect(self.ui.doubleSpinBox_2,SIGNAL("valueChanged(double)"),self.on_change2)
def on_change1(self):
if self.ui.doubleSpinBox.hasFocus():
self.ui.doubleSpinBox_2.setValue(3.3*self.ui.doubleSpinBox.value())
def on_change2(self):
if self.ui.doubleSpinBox_2.hasFocus():
self.ui.doubleSpinBox.setValue(self.ui.doubleSpinBox_2.value()*.77)
因此,除了它正在工作之外,这是最好/最通用的解决方案吗?