Python类(对象)没有属性

2024-06-16 13:41:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python类的初学者,我对这段代码有点小问题(这是一段pyqt代码)。函数globalprogress是从另一个文件调用的,但是当他调用函数UpdateBar时,我的计算机一直告诉我,“Ui\IA object没有属性'progression'”,但那不是真的。你知道吗

有人知道我做错什么了吗? 非常感谢。你知道吗

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()

Tags: 代码selfuinumberobjectdefiapercentage
3条回答

试试看:

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)    

enter image description here

默认情况下不调用函数setupUI(),其中设置了progression属性。您可以使用__init__(),它将在实例化类(即创建类的对象)时自动运行,或者强制setupUI()在globalprogress()函数中运行。你知道吗

在执行UpdateBar()之前,必须对UIIA对象调用setupUi()。你知道吗

相关问题 更多 >