本日のお題は『PyQtを使用したウインドウ表示』です。
これまでの学習では、ユーザが値を指定するような操作が無く、プログラム上の固定値を使用していましたが、これではパラメトリックなコマンドを作ることができません。
というわけで今回は、標準搭載されているPyQtを利用して、GUIのアプリケーションを作成していきたいと思います。
1. 環境
- FreeCAD 0.18
2. PyQtのバージョン
UI作成時に使用するPyQtのバージョンですが、上記FreeCAD 0.18においては、『PyQt5』が使えるようになっています。
3. PyQt4は入れられない?
ちなみに以前、デバッグ用にptvsdをインストールする際用いた、pipコマンドを使用して、PyQt4をインストールしようとすると、同梱されているPythonにあうバージョンが無いと怒られます。
下記実行結果です。
No matching distribution found for PyQt4
というわけでここは騒がず、PyQt5を粛々と使用していきましょう。
4. プログラムを書いてみよう
まずは基礎となる『Hello World!』のラベルが貼られたUIを作成してみましょう。
import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * class MainDialog(QWidget): def __init__(self, parent=None): super(MainDialog, self).__init__(parent) # ダイアログ self.setGeometry(100, 100, 250, 80) self.setWindowTitle('Hello World!') # ラベル self.label = QLabel(self) self.label.move(20, 20) self.label.resize(60, 40) self.label.setText('Hello World!') if __name__ == '__main__': app = QApplication(sys.argv) mainDlg = MainDialog() mainDlg.show() app.exec_()
5. 実行結果
以下のようにHello World!のラベルが貼られたウインドウが表示されます。
6. 懸念事項
PyQtを使用するにあたり、少々気になった点があります。
- プログラム終了後、FreeCADのアプリケーションメニューがグレーアウトされる。
これは現状、何が原因で発生しているのか不明です。ちなみに、グレーアウトされてはいるものの、通常時と同様に選択することはできます。
(見た目だけグレーアウトされているだけ?)
何か掴めたら、本記事に追記します。
7. まとめ
- FreeCADのGUIアプリケーションにはPyQtを使うことができる。
- FreeCAD 0.18に同梱されているPyQtのバージョンは『5』。
8. 最後に
PyQtはあくまでUIの手段であって、やはり重要なのはこれまで学習してきた『ベクトルの計算』や『履歴の扱い方』などです。
PyQtを有益に扱うためにも、これまで記事にしてきた内容をしっかり覚えておきたいものです(自分への戒め)。
9. ソースコードについて
筆者はPyQtに関してあまり詳しくないため、おかしなソースコードが混じるかもしれません。もし何かお気づきの際は、コメントを頂けると幸いです。
更なる情報をお探しの方は!
下記のリンクから、FreeCADプログラミングのトップページに飛びます。
よろしければご参照くださいませ。