この記事で学べること
- Dockerを利用したPySimpleGUIの開発環境の構築【PySimpleGUI】
- Dockerを利用したGUIの開発環境の構築【Docker & X11 & VcXsrv】
前提条件
- Docker 及び Docker-compose が導入済みであること
- Python 及び Docker の基本的な利用ができること
- X11の概要をしっているとなお良い
自分はDockerToolboxを利用していますが、Docker Desktopでもできるはず(未検証)
ホスト側の設定とコンテナの準備
ホスト側の設定(VcXsrvの導入)
ホスト側でコンテナのWindowを表示するために、VcXsrvを導入する。
VcXsrv:ダウンロードリンク
ここでセキュリティのエラーを回避するためにコンテナが起動しているVM等のIPアドレスを取得する。
取得したIPアドレスをVcXsrvがインストールされているフォルダの「x0.hosts」へ追記する。
通常インストール先:C:\Program Files\VcXsrv
インストールしたらXLanuchをデフォルトの設定で起動する。
タスクバーで起動していればOK!
コンテナの準備
DockerfileとDocker-compose.ymlを作成する。
# 最低限必要な部分だけ抜粋
FROM python:3.8.2
RUN pip install pysimplegui
pip installでPySimpleGUIをインストールしているだけ。
ユーザーやフォルダ、他の依存関係等々の設定は自分で足すこと。
version: "3.2"
services:
python-gui:
build: .
restart: always
tty: true
volumes:
- ホスト側フォルダ:コンテナ側フォルダ
environment:
- DISPLAY=ホストIPアドレス:0.0
X11の設定を環境変数でしている。
ここでのホストIPアドレスは、DockerNatのIPアドレスやVirtualBoxネットワークのIPアドレスになる。
(当たり前だけどコンテナと繋がっているネットワークじゃないとダメ)
Qiita参考記事:Docker for WindowsでGUI(sshでX11転送しない方法)
ここまでできたらコンテナを起動して、準備完了
docker-compose up -d --build
PySImpleGUIの利用
作成したコードを実行すれば、ホスト側にWindowが作成されるはず。
以下のようなエラーが出た場合はX11の設定がうまく行ってないので、再度設定を見直す。
省略 : couldn't connect to display "ホストIPアドレス:0.0"
環境構築メインの記事なので、コードの作成方法は下記記事を参照してください。
公式のドキュメントがしっかりしていて良い。
-
PySimpleGUI
- 全体の説明や各要素の説明などがある。
-
PySimpleGUI Cookbook
- コードのサンプル集で解説もある。
-
Github:PySimpleGUI DemoPrograms
- 公式Githubの中にコード例が色々あって参考になる
日本語で参考になった記事も上げておく
-
Qiita記事:Tkinterを使うのであればPySimpleGUIを使ってみたらという話
- 概要から簡単な例まで丁寧でわかりやすい記事、記事末に日本語資料の解説記事リンクあり。
-
Qiita記事:PySimpleGUIの基本的な使用方法
- 各要素の解説をしているPDFのテキスト。
追記
コンテナで作成したアプリケーションをWindows向けにEXE化する方法も記事にしました。
PythonのWindows用EXE化をDockerコンテナで実現する方法