qthreadからqthreadへのシグナルの送信に問題があります。私が使っているコードの同様の抽出物は、以下の通りです:Pythonが2つのQThreads間でシグナルを送信しています
class auth(QtCore.QThread):
authenticate = pyqtSignal()
serverDown = pyqtSignal()
accntonline = pyqtSignal()
def __init__(self, parent=None):
super(auth, self).__init__(parent)
def run(self):
self.authenticate.emit()
class Threadclass(QtCore.QThread):
authenticator = "n"
def __init__(self, parent=None):
super(Threadclass, self).__init__(parent)
#setting first values avoiding errors
self.a = auth(self)
self.a.authenticate.connect(self.setauthentication)
#All small functions setting values from box.
def setauthentication(self):
print("awdawdawda")
self.authenticator = "y"
私は変更されません変数self.authenticator
AUTHのスレッドを実行すると。それは "n"のままです。 すべてのヘルプは、あなたがQThread
のrun
メソッドをオーバーライドする場合は、明示的にそのexec
メソッドを呼び出さない限り、それは独自のイベントループを開始しません
あなたは 'QThread'の' run'メソッドをオーバーライドする場合、それはあなたがない限り、独自のイベントループを開始しません明示的に 'exec'メソッドを呼び出します。イベントループは、スレッド間信号の処理に必要です。このため、通常は、 'run'をオーバーライドするのではなく、ワーカーオブジェクトを作成してスレッドに移動する方が良いでしょう。 – ekhumoro
@ekhumoro有用な情報私が与えたコードを使用して例を提供できるかどうかは可能ですか? – Kermit
サンプルコードに基づいて回答を追加しました。うまくいけば、実際のアプリケーションで使用するためにそれをどのように適応させるかを見ることができます。 – ekhumoro