Python类(对象)没有属性

时间:2019-02-19 14:51:14

标签: python class methods pyqt

我是python类的初学者,并且我对此代码有一点问题(这是pyqt代码)。从另一个文件调用了 globalprogress 函数,但是当他调用函数 UpdateBar 时,我的计算机不断告诉我“ Ui_IA对象没有属性'progression'”。 em>”,但事实并非如此。

有人知道我在这里做错了吗? 谢谢。

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

3 个答案:

答案 0 :(得分:0)

默认情况下不调用其中设置了progress属性的setupUI()函数。您可以使用__init__(),该方法将在实例化该类(即创建该类的对象)后立即自动运行,或强制setupUI()在globalprogress()函数中运行。

答案 1 :(得分:0)

在执行setupUi()之前,必须在UIIA对象上调用UpdateBar()

答案 2 :(得分:0)

尝试一下:

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