Python类(对象)没有属性[重复]

问题描述 投票:0回答:3

这个问题在这里已有答案:

我是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()
python class methods pyqt
3个回答
0
投票

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


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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.