0

PyQt4アプリでは、ユーザーの操作に応じてスライダーを1つまたは別のスロットに接続します。ボタンのクリックに応じてスロットの割り当てを変更します。いくつかの異なるスロットは異なることを行い、いくつかの「if」ステートメントで1つのスロットにマージするにはあまりにも異なります。

このアプリは頻繁にクラッシュします。このようにオンザフライでスロットを1つの信号に再割り当てするのはコーシャではないかと思います。これにより、PyQt4の内部にあるポインタがぶら下がったり、メモリが破損したり、その他の問題が発生したりする可能性がありますか?私がやっていることで問題がなければ、他の場所でバグを探します。

これが私のアプリの非常にスケッチバージョンです:

def MyThing(QWidget):

    (in some approprate place)
       self.s = QSlider()


    def MethodOne(self):   # this is a slot handling a button click
       self.s.valueChanged.connect(self.someslot1)

    def MethodTwo(self):   # likewise
       self.s.valueChanged.connect(self.someslot2)

    def someslot1(self, svalue):  # slider movement handler
       (compute, show info based on slider position)

    def someslot2(self, svalue):   # similar to someslot1
       ....
4

1 に答える 1

1

connect を呼び出したときに 2 つの接続されたオブジェクトがまだ存在する場合、それ自体でクラッシュが発生することはありません。

コードによると、以前に接続されていたスロットを (たとえば) 切断していないようです。これによりself.s.valueChanged.disconnect()、信号ごとに両方のスロットが複数回呼び出される可能性があります。これは、アプリケーションが時間とともに遅くなる可能性があることを意味します。スロットで何をするかによってクラッシュします。

于 2012-06-22T23:55:25.950 に答える