1

Qt Designer で作成した GUI があります。1 つの要素 (「スクリーンショット」) は、別のクラス定義のプレースホルダーとして使用されます。Python コードの翻訳は次のようになります。

...

class Ui_endomess(object):

    def setupUi(self, endomess):
        ...
        self.screenshot = screenshot(self.centralwidget)
        ...        

from screenshot import screenshot

「スクリーンショット」クラスは次のようになります。

...
class screenshot(QGraphicsView):
... 
    def some_function(self):
        ...

両方とも、次の構造を持つメイン スクリプトで使用されます。

...
from endomess_ui import Ui_endomess
...

class endomess(QMainWindow, Ui_endomess):

    def __init__(self):
        QMainWindow.__init__(self)
        self.setupUi(self)
    ...

def main(argv):
    app = QApplication(argv, True)
    wnd = endomess()
    wnd.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main(sys.argv)

もちろん、次のように「endomess」クラス内から GUI オブジェクトを操作できます。

self.calibrateButton.setEnabled(True)

私がやりたいのは、「スクリーンショット」クラス内の関数から GUI 要素を操作することです。「グローバルな」呼び出しをいじりましたが、その方法がわかりません。これは可能ですか?

すべての助けを前もってありがとう!

4

1 に答える 1

2

qt-way は、クラスでシグナルを定義し、それを変更を実行できるクラスscreenshotのスロットに接続することです。endomess

クラス内から(self.parent() は である必要があり、それはインスタンスの親です)screenshotとしてオブジェクトにアクセスすることもできますが、階層内の何かが変更されると、これが壊れる可能性があります。self.parent().parent()centralWidgetendomess

于 2012-11-14T18:00:36.057 に答える