やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

QMLで画面をつくってPySide2で使う

 Qtデザイナじゃないよ。

成果物

0

やってみる

  1. QMLで画面を書く
  2. PySide2でQMLを読み込む
  3. 実行する

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

0

所感

 QtデザイナとQMLってなにが違うの? どう使い分けるべきなの?

 書いてみたかぎり、QMLのほうが短いコードで書けた。可読性も高い。QMLのほうが新しい。なのでQMLを使いたい。

 でも、Qtデザイナが使えないんだよなぁ。

対象環境

$ uname -a
Linux raspberrypi 5.4.83-v7l+ #1379 SMP Mon Dec 14 13:11:54 GMT 2020 armv7l GNU/Linux