这个问题在这里已有答案:
我是python类的初学者,我对这段代码有点问题(它是pyqt代码)。从另一个文件调用函数globalprogress,但是当他调用函数UpdateBar时,我的计算机一直告诉我“Ui_IA对象没有属性'进展'”,但事实并非如此。
有人知道我这里做错了吗?谢谢。
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_IA(object):
def setupUi(self, IA):
IA.setObjectName("IA")
IA.resize(931, 570)
self.centralWidget = QtWidgets.QWidget(IA)
self.centralWidget.setObjectName("centralWidget")
self.progression = QtWidgets.QProgressBar(self.centralWidget)
self.progression.setGeometry(QtCore.QRect(50, 450, 831, 61))
self.progression.setProperty("value", 0)
self.progression.setObjectName("progression")
def UpdateBar(self):
self.progression.setValue(percentage)
def globalprogress(number):
global percentage
UIIA = Ui_IA()
percentage = int(number)
UIIA.UpdateBar()
在执行setupUi()
之前,你必须在你的UIIA
对象上调用UpdateBar()
。
试试吧:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_IA(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(931, 570)
self.centralWidget = QtWidgets.QWidget(MainWindow)
self.centralWidget.setObjectName("centralWidget")
self.progression = QtWidgets.QProgressBar(self.centralWidget)
self.progression.setGeometry(QtCore.QRect(50, 450, 831, 61))
self.progression.setProperty("value", 0)
self.progression.setObjectName("Progression")
MainWindow.setCentralWidget(self.centralWidget)
def UpdateBar(self, MainWindow, percentage=0):
self.progression.setValue(percentage)
self.progression.show()
def globalprogress(number):
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_IA()
ui.setupUi(MainWindow)
MainWindow.show()
ui.UpdateBar(MainWindow, number)
sys.exit(app.exec_())
if __name__ == "__main__":
globalprogress(55)
默认情况下不调用函数setupUI(),其中设置了progress属性。您可以使用__init__()
,它将在实例化类(即类的对象)后自动运行,或强制setupUI()在globalprogress()函数中运行。