Skip to main content
 首页 » 编程设计

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

2025年05月04日25shanyou

我有一个由 Qt 设计器创建的 GUI 类,其中我有一个进度条,另一个类中所有的数字运算都已完成,在此期间我希望我的进度条定期更新。我想我会这样做的方式是在其他类(class)做这样的事情:

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) 

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