Change the value of the progress bar from a class other than my GUI class PyQt4
I have a GUI class created by Qt designer in which i have a progress bar, and another class in which all the number crunching is done during which i want my progress bar to update regularly. The way i thought i would do this it to do something like this in the other class:
gui.progressbar.setValue(some%)
but i cant seem to make that work. the code for the gui class is something like:
from PyQt4 import QtCore, QtGui
from Run import RunProgram
class Ui_mainLayout(QtGui.QWidget):
def setupUi(self, mainLayout):
mainLayout.setObjectName(_from开发者_如何学CUtf8("mainLayout"))
def setLayout():
self.basic_tab = QtGui.QWidget()
self.progressBar = QtGui.QProgressBar(self.basic_tab)
setLayout()
RunProgram()
i was then hoping to be able to do something like:
import gui
class RunProgram:
def __init__(self):
something = someMaths
gui.Ui_mainLayout.progressBar.setValue(something)
but obviously as i am useless this doesnt work, could someone point me in the right direction? please and thank you
gui.Ui_mainLayout
is not an instantiated class but a 'type' object (an object that can be instantiated - see here for a good overview). gui.Ui_mainLayout.progressBar
is not going to exist as its created when setupUi
is run.
Try passing progressBar
to RunProgram
explicitly:
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()
and
class RunProgram:
def __init__(self, progressBar):
something = someMaths
progressBar.setValue(something)
I think that will work, but I suggest in future posting a minimal example you expect to run that can form the basis of the explanation.
精彩评论