Pythonで行こう! 〜ぶらぶら編〜

胡椒多め、大葉をトッピング。ぐぅ!

WebKit

試したいことがあって、まず、Juliaで、Blinkを試そうとしたのだが、Build Failed状態。
しようがないので、Pythonで、Gtk+WebKitというのを見つけたのだけど、今の環境だと、Install Failed。なんですと!
で、結果的に、Qt5+WebKitとなりました。まあ、出自を考えたら、こういう構成になりますかね。
ということで、試してみます(笑)
下準備として、

$ sudo dnf install python3-pyside

クロスプラットフォームなPySideをInstallします。

Site Access

以下、引数に、URLを与えたら、表示される、という簡単なものです。

#!/usr/bin/env python3

from PySide import QtCore
from PySide import QtGui
from PySide import QtWebKit
import sys

class WebDemo:
    def __init__(self):
        self.x = 100
        self.y = 150
        self.w = 720
        self.h = 480
        self.u = 'http://google.com'
        self.t = 'Demo Title'

    def start(self): 
        app  = QtGui.QApplication([])
        view = QtWebKit.QWebView()
        view.setGeometry(self.x, self.y, self.w, self.h)
        view.setWindowTitle(self.t)
        view.load(QtCore.QUrl(self.u))
        view.show()
        app.exec_()

if __name__ == '__main__':
    wd = WebDemo()
    if len(sys.argv) == 2:
        wd.u = sys.argv[1]
    wd.start()

Moduleのロード部分を除いて見ると、start()関数が、ほぼ実体なので、7行で終わりってことになっています。
あな恐ろし。

Viewing HTML5

ってことは、ローカルに準備したHTMLも描画できそうですね、ということで、以下のような、HTMLを用意してみました。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Drawing Canvas</title>

<script type="text/javascript">
<!--
function sample() {
    var canvas = document.getElementById('sample1');

    if (canvas.getContext) {
        var context = canvas.getContext('2d');

        context.strokeStyle = 'rgb(00,00,00)';
        context.strokeRect(10,10,100,50);
        context.fillStyle = 'rgba(255,00,00,0.1)';
        context.fillRect(10,10,100,50);

        context.beginPath();
        context.arc(150,20,10,0,Math.PI*2.0,true);
        context.stroke();
        context.fillStyle = 'rgba(00,00,255,0.1)';
        context.fill(); 
    } 
}
//-->
</script>
</head>
<body onLoad="sample()">
<h2>Drawing Canvas</h2>
<canvas id="sample1" width="200" height="200"></canvas>
</body>
</html>

長方形と円を描画する簡単なもの。これを、描画させるために、先のScriptを以下のように、変更しました。

#!/usr/bin/env python3

from PySide import QtCore
from PySide import QtGui
from PySide import QtWebKit
import sys

class WebDemo:
    def __init__(self):
        self.x = 100
        self.y = 150
        self.w = 720
        self.h = 480
        self.u = 'http://localhost:8000/'
        self.t = 'Demo Title'
        self.m = ''

    def text(self):
        fi = open(self.m)
        return fi.read()

    def start(self): 
        app  = QtGui.QApplication([])
        view = QtWebKit.QWebView()
        view.setGeometry(self.x, self.y, self.w, self.h)
        view.setWindowTitle(self.t)
        #print(self.text())
        view.setHtml(self.text())
        view.show()
        app.exec_()

if __name__ == '__main__':
    wd = WebDemo()
    wd.m = sys.argv[1]
    wd.start()
$ python3 web.py hoge.html

これまた、あっさりと描画完了。いい感じです。

コメント

このブログの人気の投稿

Tabulatorで行こう! 〜ダイバー編〜

Tabulatorで行こう! 〜違うじゃん編〜

Fedoraで行こう! 〜音声合成pyttsx3編〜