2

Qtデザイナーによって作成された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)

しかし、明らかに私は役に立たないので、これは機能しません。誰かが私を正しい方向に向けることができますか? よろしくお願いします

4

1 に答える 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)

それはうまくいくと思いますが、将来的には、説明の基礎を形成できる最小限の例を投稿することをお勧めします。

于 2011-06-20T18:57:17.667 に答える