这是我的第一篇文章,我想感谢Stack Overflow这个令人惊叹的社区帮助我这些年!
然而,经过广泛的研究,我无法找到解决问题的方法。我有QtCreator生成的文件,其中包含一个进度条。 在我的代码中,我有2个类,1个是Thread。此线程必须更改进度条的值,但我完全没有这样做。
我无法从我的Thread访问变量,但我可以从Mainwindow的init中访问。我认为这个问题是setprogressBar中“self”变量的本质,但我确实发现它是什么......
当我尝试执行此代码时,结果如下:
File "C:\test.py", line 14, in setprogressBar
self.progressBar.setProperty("value", pourcentage)
AttributeError: type object 'MainWindow' has no attribute 'progressBar'
使用QtCreator生成的文件A:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
self.progressBar = QtWidgets.QProgressBar(self.widget)
self.progressBar.setObjectName("progressBar")
文件B,我的代码:
from PyQt5 import QtWidgets
from UImainwindow import Ui_MainWindow
from threading import Thread
import sys
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
# access variables inside of the UI's file
def __init__(self):
super(MainWindow, self).__init__()
self.setupUi(self) # gets defined in the UI file
self.progressBar.setProperty("value", 24) #This is working
def setprogressBar(self, pourcentage):
self.progressBar.setProperty("value", pourcentage) #This is not
class B(Thread):
def __init__(self):
Thread.__init__(self)
def run(self):
MainWindow.setprogressBar(MainWindow ,48)
APP = QtWidgets.QApplication(sys.argv)
Bi = B()
Bi.start()
MAINWIN = MainWindow()
MAINWIN.show()
APP.exec_()
对帮助人员来说太多了!
答案 0 :(得分:0)
MainWindow
是一个类,而不是一个对象。你应该做的是:
class B(Thread):
def __init__(self, target):
self.__target = target
def run(self):
self.__target.setprogressBar(48)
MAINWIN = MainWindow()
bi = B(MAINWIN)
bi.start()
MAINWIN.show()