私はPyQtを初めて使用するので、ここで我慢してください...
Qt Designer でウィジェットを作成し、コンパイルして .py として保存します。.py ファイルを編集して、いくつかの追加機能を追加します。しかし、Qt Designer に戻って GUI のレイアウトを更新する必要があるとします。カスタムコードを手動でコピー/貼り付けするのではなく、それをコンパイルして元の .py ファイルを変更で更新する方法はありますか?
生成されたファイルの上部にあるコメントを見ると、次の行が表示されます。
# WARNING! All changes made in this file will be lost!
これにより、ファイルが編集されることを意図していないことが明確になります。しかし、これは問題ではありません。なぜなら、これは単なる通常の python モジュールであり、メイン アプリケーションにインポートしてそこからアクセスするのは簡単だからです。
Qt Designer から最上位オブジェクトのサブクラス ( QMainWindow
、QDialog
またはQWidget
) をsetupUi
作成し、生成されたモジュールによって提供されるメソッドを使用して、すべてのウィジェットをそのサブクラスのインスタンスに追加するだけです。
したがって、Qt Designer の最上位オブジェクトの名前が「MainWindow」である場合、pyuic は対応するUi_MainWindow
クラスを作成し、スクリプトにインポートして次のmain.py
ように使用できます。
from PyQt4 import QtCore, QtGui
from myui import Ui_MainWindow
class Window(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.button.clicked.connect(self.handleButton)
def handleButton(self):
print('Hello World!')
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
詳細については、PyQt ドキュメントのQt Designer の使用を参照してください。
個人的に私はそれをコンパイルするのが嫌いです。しかし、エクモロが言ったように、クラスをインポートできます。これは今でも嫌いだけど。pyuic
時には厄介なexample_rc
ものを輸入し、生産性レベルを再び低下させます。絶対に に変換.ui
する必要がある場合は.py
、ファイルを作成して変換し.bat
てください。そのためのコード:
@ECHO OFF
cd [directory of choice]
pyuic[4/5, depends on pyqt] -x example.ui -o example.py
または、OS用に持っているものは何でも。ui = uic.loadUi('example.ui')
個人的にはand thenを使うのが好きui.setupUi()
です。それはあなたがはるかに効率的であることを可能にします!!