从我的GUI类PyQt4以外的类更改进度条的值

时间:2011-06-20 18:29:06

标签: python pyqt pyqt4 qprogressbar

我有一个由Qt设计师创建的GUI类,其中我有一个进度条,另一个类中完成所有数字运算,我希望我的进度条定期更新。我认为我会这样做的方式是在另一个类中做这样的事情:

gui.progressbar.setValue(some%)

但我似乎无法做到这一点。 gui类的代码类似于:

from PyQt4 import QtCore, QtGui
from Run import RunProgram

class Ui_mainLayout(QtGui.QWidget):
    def setupUi(self, mainLayout):
        mainLayout.setObjectName(_fromUtf8("mainLayout"))
        def setLayout():
            self.basic_tab = QtGui.QWidget()
            self.progressBar = QtGui.QProgressBar(self.basic_tab)
        setLayout()
        RunProgram()

我当时希望能够做到这样的事情:

import gui

class RunProgram:
    def __init__(self):
        something = someMaths
        gui.Ui_mainLayout.progressBar.setValue(something)

但很明显,因为我无用,这不起作用,有人能指出我正确的方向吗?拜托,谢谢你

1 个答案:

答案 0 :(得分:1)

gui.Ui_mainLayout不是实例化类,而是“类型”对象(可以实例化的对象 - 请参阅here以获得良好的概述)。 <{1}}在运行gui.Ui_mainLayout.progressBar时创建时不会存在。

尝试明确地将setupUi传递给progressBar

RunProgram

from PyQt4 import QtCore, QtGui
from Run import RunProgram

class Ui_mainLayout(QtGui.QWidget):
    def setupUi(self, mainLayout):
        mainLayout.setObjectName(_fromUtf8("mainLayout"))
        def setLayout():
            self.basic_tab = QtGui.QWidget()
            self.progressBar = QtGui.QProgressBar(self.basic_tab)
        setLayout(self.progressBar)
        RunProgram()

认为会起作用,但我建议将来发布一个期望运行的最小例子,它可以构成解释的基础。