2016-07-10 9 views
0

値が変更される前に強制的に検証するために、pyqt5のQSpinBoxのstepByメソッドをオーバーライドしたいと考えています。 私のコードでは、スピンボックスの「増加」ボタンをクリックすると、すべてうまくいくが、「減少」ボタンが機能していないように見えます...なぜこれだけですか?ここでQSpinBox.stepbyメソッドをオーバーライドするspinboxのみインクリメント

はコードです:コンソールが、減少ボタンの「アップ」

class custom_spinbox(PyQt5.QtWidgets.QSpinBox): 
    def __init__(self, *args, **kwargs): 
     super(custom_spinbox, self).__init__(*args, **kwargs) 

    def stepBy(self, step): 
     if step == 1: 
      print("up") 
     if step == -1: 
      print("down") 

class ui_attr(QWidget): 
    def __init__(self, *args, **kwargs): 
     super(ui_attr, self).__init__() 
     #loading all the stuff 
     uic.loadUi("wdg_attr_2.ui", self) 

     test = custom_spinbox() 
     self.grid.addWidget(test, 1, 1) 

    def aff(self): 
     self.show() 

インクリメントボタンの印刷は何も表示されません。 QSpinBoxの代わりにQAbstractSpinBoxをサブクラス化しようとしましたが、コンソールには何も表示されませんでした。

私は何を欠席しましたか?

+0

どのような確認が必要ですか?許容される範囲を制限するには 'minimum'と' maximum'プロパティを使うか、値の変化を検出するために 'valueChanged'シグナルを使うだけです。 –

+0

それは解決策ですが、間違った順序でやっているような気分にさせます。変更を確認してください。可能であればverifiyしてください。 – Dodrekai

答えて

0

stepByを上書きしています。スピンボックスに表示されている値を変更するのはあなた次第です。あなたのコードでは、値はまったく変わりません。

デフォルトでは、スピンボックスの最小値は0です。ゼロにすると、ステップダウンボタンは無効になります。そのため、ステップダウンボタンをクリックしても出力は生成されません。

super(custom_spinbox, ...の後にself.setMinimum(-100)を追加すると、「下」が印刷されます。

QAbstractSpinBoxのサブクラス化については、QSpinBoxのように動作させるには大変な作業をしなければなりませんが、それほど簡単な機能は必要ありません。

関連する問題