2017-06-28 5 views
1

私の目標は、Pythonプログラムで.uiインタフェースを使用することです。 うまく動作しますが、私が望むものを正確に得ることができないので、改善したいと思います。pyuiを使って.uiを正しく使用する

class MainWindow(QWidget): 

    def __init__(self): 
     super().__init__() 
     self.initUI() 

    def initUI(self): 
     self.ui = uic.loadUi('sss.ui') 
     mainLayout = QVBoxLayout() 
     mainLayout.addWidget(self.ui) 
     self.setLayout(mainLayout) 
     self.show() 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    ex = MainWindow() 
    sys.exit(app.exec_()) 

今のところ私はsss.uiを貼り付けるレイアウトを作成する必要があります。 QVboxLayoutはQt Designerで設定したスタイルシートを無視します。 sss.uiを直接使用するにはどうすればよいですか? 変換する必要がありますか?私は私のQtインストールでpyuic5を見つけることができませんでした...

答えて

0

まず、実行可能ファイルpyuic5を入手してください。 PyQtを再インストールして、binディレクトリ(system-wide、virtualenvなど)で検索してください。

あなたがそれをしたら、あなたはそれを使用して.uiファイルをコンパイルする必要があります

pyuic5 sss.ui > ui_sss.py 

次に、あなたのコードでそれを使用します。

import sys 

from PyQt5.QtWidgets import QWidget, QApplication 

from ui_sss import Ui_sss # if toplevel widget in .ui file is also called "sss" 


class MainWindow(QWidget): 
    def __init__(self, parent=None): 
     super(MainWindow, self).__init__(self, parent) 
     self.ui = Ui_sss() 
     self.ui.setupUi(self) 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    w = MainWindow() 
    w.show() 
    sys.exit(app.exec_()) 
+0

はQApplicationは、私のためにPyQt5.QtWigdetsから輸入されます。 しかし今は永遠にうまく動作します。 .uiを使用する代わりに変換する理由より速く、簡単ですか? –

+0

申し訳ありませんが、私はこのコードを自分で実行しなかったので、修正します。まず、ドキュメントの例で提供されています。第二に、動的に追加されたオブジェクトを動的に操作できるかどうかはわかりませんが、自分で確認できます。第三に、このようにしてコードを書くときにあらゆる種類のIDE支援を受けることができます。そして、はい、動的な '.ui'ファイルの解析がどのように行われているのかよく分かりませんが、PythonコードをXMLの解析よりも速く準備できると思います。 – bakatrouble

関連する問題