2023/06/16(金) [n年前の日記]
#2 [python] tkinter用のGUIレイアウトツールを少し試用
Windows版のPythonには、標準でGUIアプリを作れるモジュール、tkinter が含まれている。Tcl/Tkという言語の、GUI部分を担当しているTkをPythonから利用できるようにしたのが tkinter。
その、tkinter用のGUIレイアウトが出来るツール(RADツール?)が気になったので、少し試用してみた。環境は Windows10 x64 22H2 + Python 3.10.10 64bit。
その、tkinter用のGUIレイアウトが出来るツール(RADツール?)が気になったので、少し試用してみた。環境は Windows10 x64 22H2 + Python 3.10.10 64bit。
◎ PAGEを試用 :
_PAGE - A Python GUI Generator
_PAGE - Browse /page/7.6 at SourceForge.net
現行版は 7.6 らしい。page-7.6.exe をダウンロードして実行するとインストーラが起動する。どこにインストールするかと尋ねてきたので、今回は D:\Python\page\ にインストールした。
デスクトップにアイコンが作成されたのでダブルクリックして起動しようとしたところ、「python3が無い」と言われて起動せず。page.bat を編集して python3 を python に書き換えたところ動くようになった。
少し触ってみたけれど、各部品を座標値で配置していくようだなと…。このレイアウト方法は、好きなように部品を配置できる点がメリットだけど、ウインドウサイズの変更時に部品の位置が追従して変わってくれないあたりはデメリットかも。
_PAGE - Browse /page/7.6 at SourceForge.net
現行版は 7.6 らしい。page-7.6.exe をダウンロードして実行するとインストーラが起動する。どこにインストールするかと尋ねてきたので、今回は D:\Python\page\ にインストールした。
デスクトップにアイコンが作成されたのでダブルクリックして起動しようとしたところ、「python3が無い」と言われて起動せず。page.bat を編集して python3 を python に書き換えたところ動くようになった。
@start /min python3 "%~dp0page.py" %1 %2 %3 ↓ @start /min python "%~dp0page.py" %1 %2 %3
少し触ってみたけれど、各部品を座標値で配置していくようだなと…。このレイアウト方法は、好きなように部品を配置できる点がメリットだけど、ウインドウサイズの変更時に部品の位置が追従して変わってくれないあたりはデメリットかも。
◎ GUI builderを試用 :
_SpecTcl Home Page
_SpecTcl - Browse /GUI Builder/2.5.20070129 at SourceForge.net
本来は Tcl/Tk 用のツールだけど、Perl/Tk、Ruby/Tk、Python/Tkinter もサポートしてる。座標値で部品を配置せず、グリッド内に部品を配置していくタイプ。
「here.」と書かれてるリンクをクリックすると、2.5.20070129 版の入手先ページが開く。guibuilder-win32-ix86-20070129.exe がWindows版。ダブルクリックすればウインドウが表示されて、そのまま利用できる。
Windows10 x64 22H2上でも起動はしたのだけど…。古いツールなので、Commands → Start Test を選んでも、Python 2.x 用のスクリプトを生成してしまって、Python 3.x がインストールされてる環境ではエラーが出てしまう。
環境変数 PATHの先頭に Python 2.7 を追加してから guibuilder-win32-ix86-20070129.exe を起動してみた。この状態なら Commands → Start Test でウインドウのプレビューが表示できた。ただ、一度表示すると GUI Builder が固まる…。File → Save をすれば .py も生成されて、Commands → Vide Code でPythonスクリプトのソースが見れるようなので、それでどうにか…。
_SpecTcl - Browse /GUI Builder/2.5.20070129 at SourceForge.net
本来は Tcl/Tk 用のツールだけど、Perl/Tk、Ruby/Tk、Python/Tkinter もサポートしてる。座標値で部品を配置せず、グリッド内に部品を配置していくタイプ。
「here.」と書かれてるリンクをクリックすると、2.5.20070129 版の入手先ページが開く。guibuilder-win32-ix86-20070129.exe がWindows版。ダブルクリックすればウインドウが表示されて、そのまま利用できる。
Windows10 x64 22H2上でも起動はしたのだけど…。古いツールなので、Commands → Start Test を選んでも、Python 2.x 用のスクリプトを生成してしまって、Python 3.x がインストールされてる環境ではエラーが出てしまう。
環境変数 PATHの先頭に Python 2.7 を追加してから guibuilder-win32-ix86-20070129.exe を起動してみた。この状態なら Commands → Start Test でウインドウのプレビューが表示できた。ただ、一度表示すると GUI Builder が固まる…。File → Save をすれば .py も生成されて、Commands → Vide Code でPythonスクリプトのソースが見れるようなので、それでどうにか…。
◎ SpecTclを試用 :
_SpecTcl Home Page
_SpecTcl - Browse /Windows binary/1.2.2a at SourceForge.net
前述の GUI Builder の元になったツール。だと思う。たぶん。1.2.2a が最終版だろうか。SpecTcl122a.exe をダウンロードして、ダブルクリックすれば起動する。1.2.2a なら Python/Tkinter もサポートしているらしい。他に、Java, Perl, HTML もサポートしてある模様。
これも古いツールなので、Python 2.x用のスクリプトを生成するのだけど…。Python 2.7 に切り替えて生成された .py を実行してもエラーが出てしまう。もしかすると tkinter に対応させようとしたけど途中で開発が止まってしまったのかも…。
_SpecTcl - Browse /Windows binary/1.2.2a at SourceForge.net
前述の GUI Builder の元になったツール。だと思う。たぶん。1.2.2a が最終版だろうか。SpecTcl122a.exe をダウンロードして、ダブルクリックすれば起動する。1.2.2a なら Python/Tkinter もサポートしているらしい。他に、Java, Perl, HTML もサポートしてある模様。
これも古いツールなので、Python 2.x用のスクリプトを生成するのだけど…。Python 2.7 に切り替えて生成された .py を実行してもエラーが出てしまう。もしかすると tkinter に対応させようとしたけど途中で開発が止まってしまったのかも…。
◎ pygubuを試用 :
_GitHub - alejandroautalan/pygubu: A simple GUI builder for the python tkinter module
_GitHub - alejandroautalan/pygubu-designer: A simple GUI designer for the python tkinter module
pipでインストールできる。
Pythonインストールフォルダ\Scripts\内に、pygubu-designer.exe があるので、実行するとレイアウトツールが起動する。
部品のレイアウト方法は、pack, grid, place が選べる。上下や左右に並べて配置することもできるし、グリッドで配置もできるし、座標値で配置することもできるのだろう。
pygubu-designer.exe は、拡張子が .ui の xmlファイルを出力することに特化したツールらしい。別途 .py を書いて、その中から .ui を呼び出して使う形になるっぽい。
しかし…。Python 3.10.10 + pygubu 0.31 では、import pygubu の行で「ModuleNotFoundError: No module named 'pygubu'」と表示されてしまう…。なんでや…。
py hoge.py ではエラーが出るけど、python hoge.py なら動くことに気づいた。何故…。
_GitHub - alejandroautalan/pygubu-designer: A simple GUI designer for the python tkinter module
pipでインストールできる。
pip install pygubu -U pip install pygubu-designer -U
> pip list | grep pygubu pygubu 0.31 pygubu-designer 0.36
Pythonインストールフォルダ\Scripts\内に、pygubu-designer.exe があるので、実行するとレイアウトツールが起動する。
部品のレイアウト方法は、pack, grid, place が選べる。上下や左右に並べて配置することもできるし、グリッドで配置もできるし、座標値で配置することもできるのだろう。
pygubu-designer.exe は、拡張子が .ui の xmlファイルを出力することに特化したツールらしい。別途 .py を書いて、その中から .ui を呼び出して使う形になるっぽい。
しかし…。Python 3.10.10 + pygubu 0.31 では、import pygubu の行で「ModuleNotFoundError: No module named 'pygubu'」と表示されてしまう…。なんでや…。
py hoge.py ではエラーが出るけど、python hoge.py なら動くことに気づいた。何故…。
◎ PySimpleGUIでもいいような気がしてきた :
_PySimpleGUI/readme.ja.md at master - PySimpleGUI/PySimpleGUI - GitHub
_Tkinterを使うのであればPySimpleGUIを使ってみたらという話 - Qiita
_[Python]PySimpleGUIでGUIプログラミング | 藤の手帳
_【PySimpleGUI】PythonでカンタンにGUIを作ろう! - Qiita
部品をグリッド内に配置していくだけなら、PySimpleGUI を使ってしまったほうが楽かもしれないと思えてきた。
あるいは、guizero とか…。
_Installation - guizero
_Tkinterを使うのであればPySimpleGUIを使ってみたらという話 - Qiita
_[Python]PySimpleGUIでGUIプログラミング | 藤の手帳
_【PySimpleGUI】PythonでカンタンにGUIを作ろう! - Qiita
部品をグリッド内に配置していくだけなら、PySimpleGUI を使ってしまったほうが楽かもしれないと思えてきた。
あるいは、guizero とか…。
_Installation - guizero
[ ツッコむ ]
以上です。