Измените значение индикатора выполнения из класса, отличного от моего класса графического интерфейса PyQt4 - PullRequest
2 голосов
/ 20 июня 2011

У меня есть класс графического интерфейса пользователя, созданный дизайнером Qt, в котором у меня есть индикатор выполнения, и другой класс, в котором выполняется весь перебор чисел, во время которого я хочу регулярно обновлять индикатор выполнения.То, как я думал, я бы сделал это, чтобы сделать что-то подобное в другом классе:

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 Ответ

1 голос
/ 20 июня 2011

gui.Ui_mainLayout - это не экземпляр класса, а объект типа (объект, который можно создать - см. здесь для хорошего обзора).gui.Ui_mainLayout.progressBar не будет существовать как созданный при запуске * 1005. *

Попробуйте передать 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)

Я думаю, что это сработает, но я предлагаю в будущем опубликовать минимальный пример, который вы ожидаете запустить , который может послужить основой для объяснения.

...