Python を使用して直接実行可能なクロスプラットフォーム GUI アプリを作成するにはどうすればよいですか?
-
08-06-2019 - |
質問
Python は複数のプラットフォームで動作し、デスクトップおよび Web アプリケーションに使用できるため、Python を Mac、Windows、および Linux 用の実行可能ファイルにコンパイルする何らかの方法があると結論付けています。
問題は、どこから始めればよいのか、GUI をどのように作成すればよいのかまったくわからないことです。誰かがこれに光を当て、私に正しい方向を教えてくれませんか?
解決
まず、Python バインディングを備えた GUI ライブラリが必要になります。次に、(必要に応じて) Python スクリプトをスタンドアロンの実行可能ファイルに変換するプログラムが必要になります。
Python バインディングを備えたクロスプラットフォーム GUI ライブラリ (Windows、Linux、Mac)
もちろん、たくさんありますが、私が野生で見た中で最も人気のあるものは次のとおりです。
- トキンター - に基づく Tk GUI ツールキット (Python の事実上の標準 GUI ライブラリ、商用プロジェクトには無料)
- WxPython - に基づく Wxウィジェット (人気があり、商用プロジェクトでは無料)
- Qt を使用して PyQtバインディング または Python 用の Qt. 。前者は商用プロジェクトには無料ではありません。後者はあまり成熟していませんが、無料で使用できます。
完全なリストは次の場所にあります http://wiki.python.org/moin/GuiProgramming
単一の実行可能ファイル (すべてのプラットフォーム)
単一の実行可能ファイル (Windows)
- py2exe - かつては最も人気がありました
単一の実行可能ファイル (Linux)
- 氷結 - py2exeと同じように動作しますが、Linuxプラットフォームをターゲットとしています
単一の実行可能ファイル (Mac)
- py2app - 繰り返しますが、py2exe と同様に動作しますが、Mac OS をターゲットとしています
他のヒント
もう1つのシステム(受け入れられた回答ではまだ言及されていません)はPyInstallerです。これは、py2exeが機能しなかったときに私のPyQtプロジェクトで機能しました。使いやすくなりました。
Pyinstaller は、Gordon McMillan の Python インストーラーに基づいています。もう入手できません。
py2exeの代替ツールは次のとおりです。 BBフリーズ Windows と Linux 用の実行可能ファイルを生成します。これは py2exe よりも新しく、卵を非常にうまく処理します。さまざまなアプリケーションで、設定を行わなくても魔法のようにうまく動作することがわかりました。
それもあります PyGTK, 、これは基本的に Gnome Toolkit の Python ラッパーです。これまで GUI プログラミングの知識がほとんどなかった私にとって、Tkinter よりも理解しやすいことがわかりました。かなりうまく機能し、いくつかの優れたチュートリアルがあります。残念ながら、Windows 用の Python 2.6 のインストーラーはまだ存在しておらず、しばらくは存在しない可能性があります。
Python は現在、ほぼすべての非 Windows OS にデフォルトでインストールされているため、実際に確認する必要があるのは、使用する非標準ライブラリがすべてインストールされていることだけです。
そうは言っても、Python インタープリターや使用するライブラリを含む実行可能ファイルをビルドすることは可能です。ただし、これにより大規模な実行可能ファイルが作成される可能性があります。
MacOS X には、完全なスタンドアロン GUI アプリを作成するための Xcode IDE のサポートも含まれています。これらは、OS X を実行しているユーザーであれば誰でも実行できます。
GUI 自体の場合:
PyQT かなり参考になります。
迅速なユーザーインターフェイスを開発する別の方法は、Webアプリを作成し、ローカルで実行し、ブラウザーにアプリを表示することです。
さらに、Lubos Haskoによって提案されたTKINTERオプションを使用する場合は、PORTABLEPYを試して、PythonなしでWindows環境でアプリを実行することをお勧めします。
これが最善の方法かどうかはわかりませんが、Ruby GUI アプリ (Python ではありませんが、.exe に関する限り同じ「問題」があります) を Windows にデプロイするときは、次のように書きます。メイン スクリプトを呼び出す C# の短いランチャー。これは実行可能ファイルにコンパイルされ、アプリケーションの実行可能ファイルが作成されます。
# I'd use tkinter for python 3
import tkinter
tk = tkinter.Tk()
tk.geometry("400x300+500+300")
l = Label(tk,text="")
l.pack()
e = Entry(tk)
e.pack()
def click():
e['text'] = 'You clicked the button'
b = Button(tk,text="Click me",command=click)
b.pack()
tk.mainloop()
# After this I would you py2exe
# search for the use of this module on stakoverflow
# otherwise I could edit this to let you know how to do it
py2exe
次に、ユーザーの PC に Python がインストールされていない場合でも、たとえば py2exe を使用して、アプリの実行に必要なすべてのファイルを 1 つのフォルダーに取り込む必要があります (ここでは Windows について話しています...)。Apple OS の場合、インストールする必要がなく Python が組み込まれているため、実行可能ファイルは必要ないと思います。
このファイルを作成します
1) setup.pyを作成する
このコードでは:
from distutils.core import setup
import py2exe
setup(console=['l4h.py'])
フォルダーに保存します
2)プログラムを同じsetup.pyフォルダーに配置します。pyこのフォルダーに入れて、それを分散にしたいプログラムを:エス:l4h.py
ps:ファイル名を変更します (l4h から任意の名前に変更します。これは例です)
3) そのフォルダーから cmd を実行します (フォルダー上で右クリック + Shift をクリックし、ここで cmd を開始を選択します)
4) cmd:>python setup.py py2exe に書き込みます
5) dist フォルダーには、必要なファイルがすべてあります。
6) zip にして配布できます
パイインストーラー
cmdからインストールする
**
pip インストール pyinstaller
**
ファイルがあるフォルダーの cmd から実行します。
**
pyinstaller ファイル.py
**
PySimpleGUI は tkinter をラップし、Python 3 および 2.7 で動作します。また、すべてのプラットフォームで同じソース コードを使用し、Qt、WxPython、および Web ブラウザでも実行できます。
tkinter にあるものと同じウィジェット (スライダー、チェックボックス、ラジオ ボタンなど) をすべて利用するカスタム GUI を作成できます。コードは非常にコンパクトで読みやすい傾向があります。
#!/usr/bin/env python
import sys
if sys.version_info[0] >= 3:
import PySimpleGUI as sg
else:
import PySimpleGUI27 as sg
layout = [[ sg.Text('My Window') ],
[ sg.Button('OK')]]
window = sg.Window('My window').Layout(layout)
button, value = window.Read()
で説明されているように、 PySimpleGUI ドキュメント, 、 に .EXEファイルをビルドする あなたが実行します:
pyinstaller -wF MyGUIProgram.py
その必要はありません コンパイル Mac/Windows/Linux 用の Python。これはインタープリター型言語であるため、選択したシステムに Python インタープリターをインストールするだけで済みます (3 つのプラットフォームすべてで使用できます)。
クロスプラットフォームで動作するGUIライブラリとしては、Pythonの Tk/Tcl ウィジェット ライブラリは非常にうまく機能しており、十分にクロスプラットフォームであると思います。
トキンター Tk/Tcl への Python インターフェイスです
Python プロジェクト Web ページから:
Tkinterは、Python用の唯一のGuiProgrammingツールキットではありません。しかし、それは最も一般的に使用されるものであり、UNIX、Mac、およびWindowsの間にポータブルである唯一の唯一のものです
使用できます appJar
基本的な GUI 開発用。
from appJar import gui
num=1
def myfcn(btnName):
global num
num +=1
win.setLabel("mylabel", num)
win = gui('Test')
win.addButtons(["Set"], [myfcn])
win.addLabel("mylabel", "Press the Button")
win.go()
次のドキュメントを参照してください。 appJar サイト.
インストールは次のように行われます pip install appjar
コマンドラインから。