从我的GUI类PyQt4以外的其他类更改进度栏的值

我有一个由Qt Designer创建的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)

但是很显然,因为我没用,所以这行不通,有人可以向我指出正确的方向吗?谢谢,麻烦您了

解决方法:

gui.Ui_mainLayout不是实例化的类,而是“类型”对象(可以实例化的对象-有关详细概述,请参见here). 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()

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

我认为这会起作用,但是我建议将来发布一个您希望运行的最小示例,它可以作为解释的基础.

上一篇:python-如何将tk的stringVar()转换为pyqt


下一篇:Tomcat启动后加载两次web.xml的问题(因为spring定时任务执行了俩次,引出此问题)