Ich versuche, eine Variable von einer Klasse in einer anderen zu verwenden, aber ich habe den Fehler, "run() 1 erforderlich Positions Argument fehle: 'MyWindowClass'"Zugriff auf Variable von einer anderen Klasse
class TaskThread(QtCore.QThread):
updateProgressSignal = QtCore.pyqtSignal(int)
def run(self, MyWindowClass):
for i in range(101):
self.updateProgressSignal.emit(i)
print (MyWindowClass.pbTimeUpdate)
time.sleep(MyWindowClass.pbTimeUpdate)
class MyWindowClass(QtGui.QDialog):
def __init__(self, *args):
super(MyWindowClass, self).__init__(*args)
self.pbTimeUpdate = .2
self.myLongTask = TaskThread()
self.myLongTask.updateProgressSignal.connect (self.onProgress)
self.myLongTask.start()
def onProgress (self, val)
print (val)
I habe versucht, die Variable global zu machen (außerhalb beider Klassen in derselben Datei deklariert), aber den Variablenwert in einer Klasse zu aktualisieren, die andere Klasse sieht immer noch den ursprünglichen Wert)
Was könnte das Problem sein?
Du nennst 'TaskThread.run' ohne Argumente irgendwo, aber es erwartet mit 1 Positions Argument aufgerufen werden, z.B. * MyWindowClass *, der den globalen Namen, der auf die Klasse verweist, mit Schatten versehen würde. Da 'MyWindowClass' gemäß Ihrem Beispiel global ist, lassen Sie das Argument einfach aus' def run (self, MyWindowClass): '. –
Bitte teilen Sie die gesamte Stack-Trace/Fehlermeldung und den Code, auf den sich bezieht. Wir müssen den fehlgeschlagenen Aufruf von 'run()' sehen – skrrgwasme
Nicht sicher, ob es das gleiche ist, aber ich rufe nicht auf, ich rufe an ... Ich erstelle die Aufgabe und starte diesen Weg: self.myLongTask = TaskThread() self.myLongTask.updateProgressSignal.connect (self.onProgress), self.myLongTask.start() .. Dieser Teil funktioniert, der TaskThread startet an dieser Stelle. Ich habe gerade versucht, def run (self) auszuführen, bekomme aber einen Fehler, dass MyWindowClass nicht das pbTimeUpdate-Attribut hat. – ben