Python Python 活用 プログラミング

【python】【PyQt5】デスクトップアプリ化して配布 -その1 ウィンドウを作成-

pythonでは、コードだけの処理を書くことが多いと思います。

もしくは、jupyter notebookでグラフを書きながら、コードを書くことも多いです。

しかし、ユーザーがぽちぽちっと操作ができる、デスクトップアプリを開発したいという方もいるのではないでしょうか?

 

本記事はこんな方におすすめです。

hituji
pythonに慣れてきて、本格的なアプリケーションを開発したい

 

本記事の内容

  • 配布に必要なもの
  • PyQt5
  • 実装方法

 

pythonのアプリケーションだと、ウェブのアプリケーションもありますが、デスクトップアプリも全然ありです。

使ってみても、全然不便ではないし、windowsのみならずmac osなどでも動かすことができます。

今回の記事では、次のような何もないデスクトップアプリを起動するところまでを説明します。

 

サンプルコード

 

スポンサーリンク

配布に必要なもの

配布はexeにする方法があると思いますが、今回は、python embeddable packageを使います。

少し手順が必要ですが、下記リンクで手順を説明しています。

参考Windowsでpythonを使う/配布する時に便利!Python embeddable package使い方

続きを見る

このパッケージにPyQt5をインストールします。

pip install PyQt5

 

 

この省略したい方は、下記よりダウンロードしてください。

 

サンプルコード

 

先程のリンクの記事と違う点は、以下のフォルダ構成になっている点と

赤字のapp.batが追加してあり、このバッチで起動するようにして、そのためにsetenv.batの最後に1行追加しています。

基本的にはコードをダウンロードしてもらって、動かしてもらえれば良いですが、バッチファイルの説明も簡単にしておきます。

_internalフォルダ

この_internalフォルダにはpython環境(python-3.8.7フォルダ)とpythonコード(app_codeフォルダ)が入っています。

set_env.batでは、pythonを動かすための環境を設定しています。

SET DP0=%~dp0
SET DP0=%DP0:~0,-1%

rem overriding windows user/local environment
SET LOCALENV_DIR=%DP0%\_local_env
SET TMP=%LOCALENV_DIR%\_tmp
SET TEMP=%LOCALENV_DIR%\_tmp
SET HOME=%LOCALENV_DIR%\userprofile
SET HOMEPATH=%LOCALENV_DIR%\userprofile
rem SET USERPROFILE=%LOCALENV_DIR%\userprofile
SET LOCALAPPDATA=%LOCALENV_DIR%\localappdata
SET APPDATA=%LOCALENV_DIR%\userroaming

SET PYTHON_PATH=%DP0%\python-3.8.7

rem overriding default python env vars in order to interfere with any system python installation
SET PYTHONHOME=
SET PYTHONPATH=
SET PYTHONEXECUTABLE=%PYTHON_PATH%\python.exe
SET PYTHONWEXECUTABLE=%PYTHON_PATH%\pythonw.exe

SET PYTHON_EXECUTABLE=%PYTHON_PATH%\python.exe
SET PYTHONW_EXECUTABLE=%PYTHON_PATH%\pythonw.exe
SET PYTHON_BIN_PATH=%PYTHON_EXECUTABLE%
SET PYTHON_LIB_PATH=%PYTHON_PATH%\Lib\site-packages
SET PATH=%PYTHON_PATH%;%PYTHON_PATH%\Scripts;%DP0%\CMake\Bin;%PATH%
SET DISTUTILS_USE_SDK=1

SET APP_ROOT=%DP0%\app_code

今回追加したのは、最後の1行です。

app.bat

アプリ起動用のバッチファイルです。

set_env.batを動かしてから、今回のデスクトップアプリのコードである、main_view.pyを実行しています。

@echo off
call _internal\setenv.bat

"%PYTHON_EXECUTABLE%" "%APP_ROOT%\main_view.py"

pause

 

コードをダウンロードされた方は、app.batを実行してみてください。

何もないデスクトップアプリが表示されます。

 

PyQt5

PyQtは、pythonでデスクトップアプリを開発するためのライブラリで、WindwosやMacなどのOSでも動かせます。

今回は、python embeddable packageを使うので、Windows配布前提ですが、コードをMacに持っていけば、Macでも動きます。

 

実装方法

app.batでapp_codeフォルダのmain_view.pyを起動するようにしているので、このmain_view.pyにデスクトップアプリを実装していきます。

ライブラリ読み込み

PyQt5のライブラリを読み込みます。

from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys

メインウィンドウを作成

QMainWindowを継承して、MainWindowを作って、サイズとウィンドウタイトルを設定します。

class MainWindow(QMainWindow):
    def __init__(self) -> None:
        super(MainWindow, self).__init__()
        self.resize(QSize(600, 500))
        self.setWindowTitle('app')

 

アプリの起動部分を作成

先程のMainWindowを起動しているところになります。

ここは、決まり文句なので、そのまま使い回しましょう。

def get_main_app(argv=[]):
    app = QApplication(argv)
    win = MainWindow()
    win.show()
    return app, win

if __name__ == '__main__':
    app, _win = get_main_app(sys.argv)
    sys.exit(app.exec_())

 

これで、空のデスクトップアプリが起動できます。

スマフォアプリにしろ、MicrosoftのVisual Studioでも大抵はプロジェクト作成と同時に空のアプリが作れることを思うと手間ですね。

 

次からはメニューやボタンなどのパーツを追加していきたいと思います。

参考【python】【PyQt5】デスクトップアプリ化して配布 -その2 メニューの追加-

続きを見る

 

-Python, Python 活用, プログラミング