从非GUI类中更改PyQt4进度条的值
我有一个用Qt设计器创建的图形界面类,其中有一个进度条,还有另一个类负责进行所有的计算。在计算过程中,我希望我的进度条能够定期更新。我想的办法是在另一个类里做类似这样的事情:
gui.progressbar.setValue(some%)
但是我似乎无法让它正常工作。图形界面类的代码大概是这样的:
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 个回答
1
gui.Ui_mainLayout
不是一个已经创建的类,而是一个“类型”对象(也就是可以被实例化的对象 - 你可以在这里找到一个很好的概述)。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)
我觉得这样做会有效,但我建议你以后发帖时提供一个你期望能运行的最小示例,这样可以更好地帮助解释问题。