2 つの QspinBoxes があり、spinBox_1 を更新すると、2 番目にこの値が 2 倍表示されるとします。spinBox_2 を更新すると、最初のものはこの値の半分を表示します。on_valueChanged1
ここでは、 およびon_valueChanged2
との相互接続のような 2 つの方法を使用すると問題なくSIGNAL("valueChanged(int)")
動作します。Change in 1 は、change 2 のメソッドを呼び出します。次に change 2 は、変更して 1 を再度呼び出します。因数 2 と 1/2 の選択がうまくいき、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)
それが機能しているという事実は別として、これは最善/最も一般的な解決策ですか?