QMLで画面をつくってPySide2で使う
Qtデザイナじゃないよ。
成果物
やってみる
- QMLで画面を書く
- PySide2でQMLを読み込む
- 実行する
1. QMLで画面を書く
import QtQuick 2.0 Rectangle { width: 600 height: 300 color: "#FFCCDD" anchors.fill: parent TextInput { id: _talkText text: "発話したいテキストを入力してください。" focus: true font.pixelSize: 0.1 * parent.height anchors.fill: parent onAccepted: {console.debug(_talkText.text);} } }
2. PySide2でQMLを読み込む
run.py
#!/usr/bin/python3 # -*- coding: utf-8 -*- import os from sys import exit, argv from PySide2.QtWidgets import QApplication from PySide2.QtQuick import QQuickView from PySide2.QtCore import QUrl def Main(): app = QApplication(argv) view = QQuickView() HERE = os.path.dirname(os.path.abspath(__file__)) UI = os.path.join(HERE, 'talker.qml') url = QUrl(UI) view.setSource(url) view.show() exit(app.exec_()) if __name__ == '__main__': Main()
3. 実行する
./run.py
所感
QtデザイナとQMLってなにが違うの? どう使い分けるべきなの?
書いてみたかぎり、QMLのほうが短いコードで書けた。可読性も高い。QMLのほうが新しい。なのでQMLを使いたい。
でも、Qtデザイナが使えないんだよなぁ。
対象環境
- Raspbierry pi 4 Model B
- Raspberry Pi OS buster 10.0 2020-08-20 ※
- bash 5.0.3(1)-release
- Python 3.7.3
- PySide2
$ uname -a Linux raspberrypi 5.4.83-v7l+ #1379 SMP Mon Dec 14 13:11:54 GMT 2020 armv7l GNU/Linux