はじめに
第1章 Qt for Pythonとは
第2章 PythonとQt開発環境のセットアップ
第3章 Qt for Pythonの導入
第4章 画面の作成
第5章 PythonでのGUI制御
第6章 GUIアプリケーションの作成
本書を手に取って頂けたということは、おそらくPythonもしくはQtに興味を持って頂けた方だと思います。
Pythonは、 Stack Overflow (スタック・オーバーフロー)の2018年開発者調査結果1で、SwiftやJavaを抜いて“もっとも好きな言語”のランキングで3位に位置づけられているように、とても人気がある言語です。
「時代は、Pythonだ!Love Python!Viva Python!」
と、新たに学ぼうとする人も大勢存在する言語だと感じています。筆者もその一人です。
ただ、意気込んで飛び込んでみたものの、インタープリターやコンソールでの出力しか使用できておらず、ちょっとしたGUIアプリが簡単に開発できたらなぁ、と思ったことがあり、これが本書を執筆するきっかけとなりました。 本書で使用しているQt for Pythonは、最近あらたに追加されたパッケージではあるものの、非常に安定して使えるレベルになっており安心して開発に使用することができます。さらに、これを機にQtに対しても興味を持ってもらえたらと思います。
本書が皆さんの開発の助けとなり、日々のプログラミングを楽しむきっかけとして活用できれば幸いです。
本書のサンプル ソースコードは、次のURLから取得することが可能です。
・https://github.com/KazuoASANO/ird_make_gui_in_python_with_qt
できるかぎり内容に万全を期して作成しましたが、ご不審な点や誤りなどお気づきの点がありましたら、Twitterにて、ハッシュタグ「#qtjp」をつけてつぶやいてもらうと、ひょっとしたら筆者が見る場合があります。
本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、筆者はいかなる責任も負いません。
本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。
本書籍は、技術系同人誌即売会「技術書典5」で頒布されたものを底本としています。
Qt for Pythonを知っていますか? 本章では、まずQtについて知り、Qt公式のPythonバインディングとなったQt for Pythonの概要について紹介します。少しずつ、GUIアプリケーションに世界に足を踏み入れてみましょう。
Qt (キュート)とは、クロスプラットフォームのアプリケーションフレームワークです。GUI (グラフィカルユーザーインターフェイス)などさまざまな機能を提供してくれるライブラリーを含んだ、C++開発フレームワークです。本書執筆時点のバージョンは、Qt5.11.2です1。
C++で書かれているフレームワークであるものの、Ruby、Python、Perlなどから使用できるように、さまざまな言語バインディングのAPIがオープンソース等で提供されています。
本書ではPythonで使用できるQt for Pythonについて説明します。
QtのPythonのバインディングといえば、Riverbank Computing社が開発を進めているPyQtや、Qtのフレームワークの開発元であるThe Qt Company2がサポートしているPySideが知られています。
しかし、PySideは開発元でのライブラリーであるものの、QtのメジャーバージョンであるQt5シリーズのサポートが十分にできておらず、長い間開発が止まったままでした3。
Qt for Pythonは、Qt5シリーズをサポートする最初のリリースとして、2018年6月に発表されました。2018年5月にリリースされたQt5.11のバージョン以降をサポートし、当初の位置づけはTechnical Preview版となっていました。2018年12月に公開されたQt 5.12以降ではTechnical Preview版ではなく、正式リリース版として公開されています。
このような経緯もあり、Qt5シリーズをサポートしていないPySideは
・“PySide”もしくは“PySide1”
と呼ばれ、Qt for PythonとしてQt5シリーズをサポートしたものを
・“PySide2”
とされています。
今後、公式にサポートされQtパッケージの一部になるQt for Pythonについて本書を通じて、いち早く使っていきましょう。
Qtを使用したGUIを作成する場合、Qt WidgetsとQt Quickといったふたつの開発手法があります。表1.1がふたつの開発手法の違いです。
GUI開発手法 | UI作成Tool | 記述言語 | 拡張子 |
Qt Widgets | Qt Designer | XML(ただし UI作成Toolが自動生成) | .ui |
Qt Quick | Qt Quick Designer | QML | .qml |
Qt Widgetsは、従来のQtからある開発手法であり、古典的なデスクトップスタイルUI要素のセットのみが提供されているモジュールです4。
Qt Quickは、QML (Qt Meta-Object Language)言語というUIを記述するプログラミング言語を使って、UIを作成できるモジュールです。QML言語はCSSに似たシンタックスを持ち、宣言的なJSON風の構文でUIを記述できます。またロジックの記述にはJavaScriptを使うこともできます。
Androidで使用されているマテリアルデザインのような、ビジュアルGUIを作成するUI要素のセットが提供されており、簡単にユーザー動作に対してアニメーション化されたUIオブジェクトを作成することができます5。
本書では、このQt Quickを使用したGUIを作成していきます。
この章では、Qt for Pythonを使ってGUIを作成するための開発環境を整えましょう。Qt for Pythonを使用する上で必要なQtでのGUI作成環境の構築方法に加え、Pythonの統合開発環境の構築も紹介します。
Qt for Pythonを使用するための要件は、Pythonのバージョンを含めて、次のとおりになります1。
・Windows
─Python 3.5以上(Windowsの場合、Python 2系はサポートされていません)
・MacOS
─Python 3.6 または、2.7
・Linux
─Python 3.5以上 または、2.7
この為、本書では全てのプラットフォーム環境で対応できるようにPython 3.6を対象として環境構築をします。