1

textChanged-Signal によってトリガーされるスレッドがあります。スレッドがテキストを変更すると、スレッドが再びトリガーされ、テキストが変更されます...そしてPythonがクラッシュします。そのため、スレッドのシグナルを切断し、テキストが変更された後、シグナルを再接続したいと考えています。

「textChanged()」をリッスンしているスロットが複数あるため、切断するスロットを指定する必要があります。

切断部分で「引数がオーバーロードされた呼び出しと一致しませんでした」というエラーが表示されます。最初の接続は簡単です。再接続が機能するかどうかはわかりませんが、最初のエラーが原因で接続できません。

接続/切断を正しく呼び出すにはどうすればよいですか?

class A:
    self.textedit=QTextEdit()
    self.textedit.setText("Bla")

    self.connect(self.textedit, SIGNAL("textChanged()"), self.refresh)
    self.thread=Worker(self)

    def refresh(self):
        self.thread.start()

class Worker:
    def __init__(self, A)
        self.A=A

    def run(self):
        self.A.disconnect("textChanged()", self.A.refresh)
        .
        . do sth.
        . self.A.textedit.setText("modified Bla")
        self.A.connect(self.A.textedit, SIGNAL("textChanged()"), self.A.refresh)
4

1 に答える 1