Créer une application Python-GUI dans Docker (PySimpleGUI)

Ce que vous pouvez apprendre dans cet article

--Construction d'un environnement de développement de PySimple GUI à l'aide de Docker [PySimple GUI] --Construction d'un environnement de développement GUI à l'aide de Docker [Docker & X11 & VcXsrv]

Conditions préalables

--Docker et Docker-compose doivent être installés --Utilisation de base de Python et Docker ――Il est encore mieux d'avoir un aperçu de X11

J'utilise Docker Toolbox, mais je devrais pouvoir le faire avec Docker Desktop (non vérifié)

Configuration côté hôte et préparation du conteneur

Paramètres côté hôte (introduction de VcXsrv)

Installez VcXsrv pour afficher la fenêtre du conteneur côté hôte. VcXsrv: lien de téléchargement

Ici, afin d'éviter une erreur de sécurité, obtenez l'adresse IP de la VM, etc. sur laquelle le conteneur s'exécute. Ajoutez l'adresse IP acquise à «x0.hosts» dans le dossier où VcXsrv est installé.

Destination d'installation normale: C: \ Program Files \ VcXsrv

Une fois installé, lancez X Lanuch avec les paramètres par défaut. OK s'il est démarré sur la barre des tâches!

Préparation des conteneurs

Créez un Dockerfile et Docker-compose.yml.

Docekrfile


#Extrait du minimum de pièces nécessaires
FROM python:3.8.2

RUN pip install pysimplegui

Installez simplement PySimpleGUI avec pip install. Ajoutez vous-même des utilisateurs, des dossiers, d'autres dépendances, etc.

Docker-compose.yml


version: "3.2"
services:
  python-gui:
    build: .
    restart: always
    tty: true
    volumes:
      -Dossier côté hôte:Dossier côté conteneur
    environment:
      - DISPLAY=Adresse IP de l'hôte:0.0

Le paramètre X11 est défini par la variable d'environnement. L'adresse IP de l'hôte ici est l'adresse IP de DockerNat ou l'adresse IP du réseau VirtualBox. (Bien sûr, il doit s'agir d'un réseau connecté au conteneur)

Article de référence Qiita: GUI avec Docker pour Windows (comment ne pas transférer X11 avec ssh)

Une fois que vous avez fait cela, démarrez le conteneur et vous êtes prêt à partir

docker-compose up -d --build

Utilisation de l'interface graphique PySImple

Si vous exécutez le code créé, une fenêtre doit être créée du côté hôte.

Si vous obtenez l'erreur suivante, les paramètres X11 ne fonctionnent pas correctement, revoyez donc les paramètres.

ErrorMessage


réduction: couldn't connect to display "Adresse IP de l'hôte:0.0"

Puisqu'il s'agit de l'article principal sur la construction d'environnement, veuillez vous reporter à l'article suivant pour savoir comment créer du code.

La documentation officielle peut être solide.

Je publierai également des articles utiles en japonais

Postscript

J'ai également écrit un article sur la façon de transformer une application créée dans un conteneur en un EXE pour Windows. Comment implémenter la conversion EXE de Python pour Windows avec le conteneur Docker

Recommended Posts

Créer une application Python-GUI dans Docker (PySimpleGUI)
Créer une application GUI simple en Python
Jusqu'à ce que vous créiez une nouvelle application dans Django
[Docker] Créez un environnement jupyterLab (python) en 3 minutes!
Créer une fonction en Python
Créer un dictionnaire en Python
Créer une application Todo avec Django ① Créer un environnement avec Docker
Créer un lecteur CSV avec Flask
Créer un conteneur DI avec Python
Créer un fichier binaire en Python
Créer une chaîne aléatoire en Python
Créer un bot LINE avec Django
Je veux créer un fichier pip et le refléter dans le menu fixe
Créez une application Web simple avec Flask
Lancer une application Flask dans Python Anywhere
[GPS] Créer un fichier kml avec Python
Créer un service Web avec Docker + Flask
Introduction à docker Création d'un environnement ubuntu dans ubuntu
Créer une matrice avec PythonGUI (zone de texte)
Utiliser WebDAV dans un environnement Docker portable
Flask-Créer un service Web avec SQLAlchemy + PostgreSQL
Créer une application d'assistance technique à l'aide de PyLearn2
Je veux créer une fenêtre avec Python
Créer un graphique de distribution normale standard en Python
Comment créer un fichier JSON en Python
Créer une matrice avec PythonGUI (combo tkinter)
Créer une bibliothèque de mutations de séquences protéiques avec des pandas
Créer un modèle d'investissement dynamique simple en Python
Créer une nouvelle page en confluence avec Python
Créer un objet datetime à partir d'une chaîne en Python (Python 3.3)
Procédure de création d'application multi-plateforme avec kivy
Créer un package contenant des commandes globales en Python
Comment créer une API Rest dans Django
Créez un fichier MIDI en Python en utilisant pretty_midi
Créer un modèle d'antenne cadre en Python dans KiCad
Créer un bot de collecte de données en Python à l'aide de Selenium
Créer une application Todo avec Django REST Framework + Angular
Créez une application graphique native avec Py2app et Tkinter
[API LINE Messaging] Créez un menu riche avec Python
Essayez de créer une application Todo avec le framework Django REST
Créez un plug-in pour exécuter Python Doctest avec Vim (1)
Créer une application Todo avec Django ③ Créer une page de liste de tâches
En Python, créez un décorateur qui accepte dynamiquement les arguments Créer un décorateur
Créez une application qui devine les étudiants avec la version python-GUI
Créer une couche pour AWS Lambda Python dans Docker
Créer un serveur Web en langage Go (net / http) (1)
À moi-même en tant que débutant Django (1) -Création d'un projet / application-
[kotlin] Créez une application de reconnaissance d'images en temps réel sur Android
À moi-même en tant que débutant Django (4) --Créer une application mémo-
Créez un faux serveur Minecraft en Python avec Quarry
Créer une application Todo avec Django ⑤ Créer une fonction d'édition de tâches
[Linux] Créez un auto-certificat avec Docker et apache
Créer un planning Django
Créer un module Python
dict in dict Transforme un dict en dict
Créer un LV amorçable