Я пытаюсь использовать переменную из одного класса в другой, но я получаю ошибку «Run() отсутствует 1 необходимый позиционную аргумент:" MyWindowClass»Доступ к переменной из другого класса
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 «Я попытался сделать переменную global (объявленную за пределами обоих классов в том же файле), но обновив значение переменной в одном классе, другой класс все еще видит исходное значение)
В чем может быть проблема?
Вы звоните 'TaskThread.run' без аргументов где-то, но, как ожидается, будет вызвано с 1 позиционным аргументом, например, * MyWindowClass *, который btw затеняет глобальное имя, ссылающееся на класс. Поскольку 'MyWindowClass' в соответствии с вашим примером является глобальным, просто оставьте аргумент из' def run (self, MyWindowClass): '. –
Просьба поделиться всем сообщением о трассировке стека/ошибкой и кодом, на который ссылается. Нам нужно увидеть неудавшийся вызов 'run()' – skrrgwasme
Не уверен, что это то же самое, но я не вызываю run, я вызываю start ... Я создаю задачу и начинаю следующим образом: self.myLongTask = TaskThread() self.myLongTask.updateProgressSignal.connect (self.onProgress), self.myLongTask.start() .. Эта часть работает, TaskThread начинает работать на этом этапе. Я попробовал просто def run (self), но получаю сообщение об ошибке, что MyWindowClass не имеет атрибута pbTimeUpdate. – ben