Help us understand the problem. What is going on with this article?

PySide2でWebブラウザをウィジェットとして使う

この記事はTakumi Akashiro ひとり Advent Calendar 2020の1日目の記事になります。Yeh!

前置き

どうも!皆さんは最近、PySide2を触ってますか?
私は……まあボチボチですね!

HoudiniでもMayaでも標準で入っているPySide2。

PySide2で標準で使えるウィジェットにWebブラウザがあるのは御存知でしょうか?
ご存じですよね?既にタイトルを見てクリックしてるはずですからね!

と茶番はさておいて。
PySide2のラップ元であるQtにはQt WebEngineと呼ばれるモジュールが存在します。

Qt WebEngineはWebコンテンツをレンダリングするための機能を提供します。
Qt WebEngine 5.15.2 - PySide2公式ドキュメントより

Qt WebEngine とは

Qt WebEngineはChromiumをベースとしたウェブブラウザを扱えるモジュールであり、
PySide2でも標準で組み込まれています。

つまり、PySide2でウェブブラウザを使えるということです!

ちなみに過去にはWebKitベースのQt WebKitもあったようですが、
こちらはQt 5.5以降非推奨になっており、
現在、PySide2ではビルドしなおさない限りは使えないようです。1

では試しに使ってみましょう!

試してみた

#!python3
# encoding:utf-8

from PySide2 import QtCore
from PySide2 import QtWidgets
from PySide2 import QtWebEngineWidgets

class WebDemo(QtWidgets.QWidget):
    URL = "https://google.com/"
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setGeometry(500, 300, 250, 110)
        self.setWindowTitle('Web Demo')

        hbox = QtWidgets.QHBoxLayout()

        webview = QtWebEngineWidgets.QWebEngineView()
        webview.setUrl(self.URL)

        hbox.addWidget(webview)

        self.setLayout(hbox)

if __name__ == "__main__":
    app = QtWidgets.QApplication()
    webdemo = WebDemo()
    webdemo.show()
    exit(app.exec_())

Google.com

image.png

three.js examples

image.png

three.jsも問題なく表示できてますね!

RedmineやShotgunを開いたり2
ツールのマニュアルを載せたりするときには便利なんじゃないですかね?

締め

というわけで、今回紹介した技術の評価としては以下の通りですね。

評価ラベル ランク(5段階)
おすすめ度 ★★
難易度 ★★
ニッチ ★★★
汎用性 ★★★★
キュート度 ★★★★★

個人的にはツールに依存していない部分は、分離して実装しておくと、
DCCツールを移行したり、新フローを構築する際に、
簡単に流用できたりするので、ウェブ技術を組み込むのは結構アリな気がしますね!


「あー、このWebブラウザ、表示するだけかぁ……
WEBでUI作って、DCCツールの関数を実行出来るようになれば楽なのになー……」とお考えの貴方。3

出来ます! 詳細は明日の記事で!!!
それでは、シーユーアゲイン!!!!!!


  1. ちなみに自分はPySide2はビルドしたことないので、この説明が正しいのかすら…分からん! 

  2. 世の中に出てくる記事を見る限り、専用のツールでAPI叩いて、
    フローを整えてるところも多そうですけどね! 

  3. そんな人いる? 

takumi_akashiro
テクニカルアーティストもどき
https://twitter.com/takumi_akashiro
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away