質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

6回答

1824閲覧

pythonのGUIはどのように作ればいいでしょうか

xail2222

総合スコア1497

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

2クリップ

投稿2021/04/07 22:43

編集2021/04/10 15:11

前提・実現したいこと

漠然とした質問ですみません。
pythonのGUIはどのように作ればいいでしょうか

★実際にはpythonでなくてもShapeファイルの操作が出来れば
.netでもいいのですが私が知っていて使いやすそうなのが
pythonだというだけの話です。

GUIの要件は以下のようなものを考えています。
・ファイルを指定
・実行と結果の確認

場合によっては
・ファイルの中身を変更するパラメーターを指定
Shapeファイルの列名を画面で一覧表示し、それぞれ変換方法を指定する
といったような操作をイメージしています

好きにしろと言われそうな気もしますが意見を聞きたくて質問します。
良い組み合わせを教えて頂けるのでも嬉しいです。
質問内容にshapeファイルの操作云々を記載していますが
shapeファイルに関係ない回答で構いません。よろしくお願いします。

発生している問題・エラーメッセージ

現在はpythonのプログラムにコマンド引数で指定したり
プログラムにパラメータを埋め込みで実行しています。
ただ、これでは使いにくい。
画面でパラメータを指定して実行出来るようにしたい。

試そうとしている事1

tkinterを使って画面を作る

tkinterを使ったのはサンプルでダイアログみたいなのを作ってみた程度でしかないのですが
デザインのコードを自分で記述しないといけないというのと
pythonの実際の処理の部分がわかりにくくなるという印象から忌避感があります。
食わず嫌いでしょうか…

試そうとしている事2

こちらは自分の知ってる範囲で想像する無理やりな感じで
実現可能かどうかもわからないですが

.netで画面を作る。comにする。win32comでpythonから呼び出す。
イベントは
https://serverless.hateblo.jp/entry/2018/11/27/010511
が参考になりそう?

と言った感じですが、こっちの方がtkinterより大変?
ただ画面はやっぱり作りやすい印象があります。

試そうとしている事3

.netで画面を作って、その画面からpythonのプログラムを実行させる。
コマンド引数で指定したり、パラメータファイルで内容をやり取りしたり
しないといけないですが「試そうとしている事2」よりはシンプルかなと思ってます。

補足情報(FW/ツールのバージョンなど)

windows10
Python 3.9.2

(解決済みにしてからの追記)
色々回答ありがとうございます。
ベストアンサーは、Excelの機能を使えるVBAということにさせて頂きました。
理由は、シートでパラメータとしての入力内容や処理結果を表示したり後に残せたりすること
フォームも必要であればVBAで画面を作れるし、呼び出し方もhtaや.netとそれほど変わりないためです。
これは用途がバッチ起動用GUIなのでtkinter等のようにイベント毎にpythonで処理をさせたいというのが少ないため起動パラメーター設定と結果出力のGUI部分と処理の実体は独立した方がプログラムとして見通しが良く、独立させるならGUI部分はpythonである必要が無いと言う理由からです
ただExcelを必ず起動して処理しないといけないので、シートを扱う必要がない場合には
他の選択肢が良いのかなと思っています。

htaもお手軽さという点でよいのですが、.netのGUIを作れる状況でという条件が付いていましたので
作れる状況であるなら.netの方が扱いやすいと考えました。

pysimpleguiは、tkinterがとっつきにくかったのに比べ、容易に扱えそうな感じがしたので
pythonオンリーの場合良いかと思います。pipでインストールしないといけない点だけが
tkinterの方が優位な点だと思っています。

GUIビルダに関しては、pythonのGUIを画面でデザイン出来るので使いこなせるようになれば
優位になるかと感じました。

QGISに関しては確かにpythonを実行できるGUI.デスクトップアプリケーションです
Shapeを扱う上でも色々な機能があると思うので良いと思っています。
shapeの図形的な結果を見たい場合はこれがよいと思います
pythonでも図形的な結果を見れますがQGISの方が詳細に見易いし、図形と属性の紐付きも分かりやすいかと思います
ただpythonの処理を流すためのGUIというより逆でデスクトップアプリケーションのマクロ言語と感じています。

まだまだそれぞれ習熟していないので、私の印象が正しいかどうかわかりませんし
本当にどれがベストなのかわかっていないと思うのですが、一先ずベストアンサーを選びました。

用途や状況に応じて回答頂いた内容がそれぞれ役に立つと感じています。
ありがとうございました。

と書いているとデスクトップアプリのMVCでMがpythonの場合でV、Cは何が良いかと言う質問な感じがしてきました。Cがあやふやです。いやそんな話じゃなくてGUIの部分とバッチ処理のデータのやり取りを簡略化するにはどうすれば良いかと言う問題が残ってる気がします。
pythonオンリーなら、この問題は少し簡単になりますね。GUIをVBA,.netにした場合、ファイルでのパラメータのやり取りになると思いますが、やはりjsonでやり取りするのがしやすいのでしょうか。vbaからだと【EXCEL VBA】VBA-JSONを導入したい(2020年度版)これでしょうか。
MIT licenseのようなので記載だけ気をつけないとかな。

当面はcsvか、独自フォーマットでいいかな。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xail2222

2021/04/08 01:06

色々紹介ありがとうございます。 テスト環境作って試してみます
guest

回答6

0

QGIS を使ってみられてはいかがですか?
https://qgis.org/ja/site/

QGIS はオープンソースのデスクトップ GIS アプリケーションです。
QGIS を使えば、自分でアプリケーションを作らなくても、質問者さんのしたいことは実現できるように思います。

もしできなくても、QGIS は Python で機能を拡張することができます。

QGISはC++で書かれており、インタフェース部分についてはQtライブラリを使用しています。 C++で書かれているQGISですが、SIPというツールを使用して、Python用インタフェースも提供されています。Qtについても同様にPython用のインタフェースが提供されています。これにより、QGISで追加機能の開発する場合、C++で書く、Pythonで書く、の2通りの方法を選択出来ます。

「QGISにおけるPythonの役割 · GIS実習オープン教材」より

QGIS で可能な Python の使用方法は、

  1. QGIS付属のPythonコンソール、もしくはコードエディタでスクリプトを書いて実行する
  2. フィールド計算機(属性テーブルの値を操作する機能)で使う関数をPythonで書く
  3. プロセシング用のアルゴリズムをPythonで書く(定型的な入出力に限られるがGUIを備えた処理インタフェースも付属)
  4. 対話型GUIインターフェースを備えたプラグインをPythonとQtを使って書く
  5. Python GUIアプリケーションにQGISサーバを埋め込む

など、多岐にわたっています。
有用なプラグインを書けば多くの人に使ってもらうことができますし、QGIS はオープンソースですので、その気になれば QGIS 自体の開発に参加することも可能です。

(追記)QGISは内部でGDAL/OGRやProj、GEOSなどのGISライブラリに依存していますが、それらのPythonインタフェースも同時にインストールされ有効になっています(osgeo.ogr、osgeo.osr、pyproj、shapelyなど)。

投稿2021/04/08 12:16

編集2021/04/08 15:10
etherbeg

総合スコア1195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t_obara

2021/04/08 14:46

面白そうですね、質問者ではありませんが、ご紹介ありがとうございます。
xail2222

2021/04/08 15:34 編集

たしかに、質問に記載した内容であればQGISでいい感じがしますね。 私はまだQGISはほぼビューワーとしてしか使えていないのですが >3.プロセシング用のアルゴリズムをPythonで書く >4.対話型GUIインターフェースを備えたプラグインをPythonとQtを使って書く この辺りを探っていけばいい感じかもしれないですね。 ただ、geopandasとかが結構便利で、それと比較してどうなのか 試してみないと比較が出来ないですね。 まぁ。pythonなのだから、QGISのプラグインでもgeopandas使えるのか どうなのか、試してみないとですね。 あと >5.Python GUIアプリケーションにQGISサーバを埋め込む こんな事が出来るんですね。 今の所、geopandasは処理が早い印象があります。 arcは処理が遅い?部分があるけど、商用だけあって機能充実してる印象です。 なので、pythonのgeopandasも視野に入れていたのですが QGISはまだよくわかってないので選択肢に入れてませんでした。 QGISもかなり使えると思うので色々評価したり ネットで探ってみるのもいいのかもしれないですね。 ただ大きなソフトという印象があって何処にでも入れれる手軽さは、うーん。結局試さないとですね
etherbeg

2021/04/08 23:23

geopandasは最初からインストールはされてないようです。pandasとExcelが機能がかぶるように、geopandasとQGISって機能がかぶるので、わざわざQGISからgeopandasを呼び出す意味は薄いかもしれませんね。プラグインやプロセシングからでもgeopandasは使えますが、ユーザが別にインストールする必要があります。 プロセシングにはGUIの入出力インタフェースが付属していてバッチ処理などもできるので、GISに使うPythonスクリプトの入出力のGUI化を求めるなら代わりとして使えるかもというのと、プラグインの制作にはテンプレートもあるので、気軽にQtを使ったGUIアプリの制作が体験できるかも、ということでQtの紹介も兼ねてQGISをお勧めさせていただきました。 大きなソフトというのは間違いなくて、手軽さは全くないです。
xail2222

2021/04/09 15:18 編集

追加の情報ありがとうございます。 geopandas入ってないのですね。Excelの一括出力がgeopandasだとopenpyxlよりも簡単だったので便利につかえそうだったのですが、というかopenpyxlだと途中でファイルが壊れてしまったのです。原因の調査をしてないので詳しくわかってないのですが。。まぁ。Excelに出力する用途もそれほど頻繁にあるわけじゃないので特に問題はないですかね。。。 ビューワーとしてしか今まで使ってなかったQGISなので、もう少し勉強していこうと思います。 GISの処理するなら、使っていいくべきですよね。
etherbeg

2021/04/10 11:15

最新の3.18.1で確認したらgeopandas入ってました。 でもアプリケーションのサイズが3.22GB…。 3.14ではまだ1.94GBだったのに…どんどんデカくなってる…
xail2222

2021/04/10 14:54

入ってたんですね。いずれLTR版にも入ってくるでしょうか。 しかしでかいですね。
guest

0

ベストアンサー

私なら、Excelとvbaですね。
vbaはシートをcsvで保存して、pythonのアプリを保存したcsvをパラメータにして呼び出すだけのボタンが一つだけです。

パラメータがあまり変わらない場合は、二回目以降は、そのxlsmファイルをコピーしてちょっと修正してボタンを押すだけで済むので楽です。

投稿2021/04/08 00:02

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xail2222

2021/04/08 00:45

確かにExcelも選択肢ですね。Excelの機能を使えるのが魅力ですね やはりpythonからgui用に作ったcomを呼び出すとか無しですね 労力的にも運用面でも
xail2222

2021/04/08 16:32

ppaulさんは、tkinterとかpythonのGUI用のライブラリでGUI作ったりする事はどれくらいありますか?
xail2222

2021/04/09 12:55

Excel(VBA)は、いくつか作りこんでみました。 VBA のフォームでファイルを指定したり、結果の詳細をシートに反映したり やはりVBAの画面とシートを扱えるという点で有力だと感じました。
guest

0

Pythonで全部作る前提でが、自分が触ったことのある範囲では
簡単なguiてあればpysimpleguiがそこそこ組みやすいという印象でした。
(デザインのコードを自分で記述しないといけないのはtkinterと同じですが、tkinterよりは簡単)

単純にコマンドを呼び出すだけでいいなら3のやり方が近道かもしれません。

投稿2021/04/07 22:55

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xail2222

2021/04/07 23:03

pysimpleguiですか。ネットで検索して目にしたことがある程度の認識です。 試してみます。 たしかに、コマンド呼び出すだけなら3が近道ですね。 pythonの結果を画面に反映させて、そこから色々また処理したい場合だと ちょっと大変かなと思ってます。
xail2222

2021/04/09 12:51

https://qiita.com/dario_okazaki/items/656de21cab5c81cabe59 をみてコピペでpysimpleguiを試してみました。 あとhttps://pysimplegui.readthedocs.io/en/latest/ここを眺めてみてたのですが 色々なものが作れそうな感じがしました。 そして、試してみてたのですが ファイル選択ダイアログも出せました。けどinputTextにその結果を反映する方法が分らない http://www.k-techlabo.org/www_python/PySimpleGUI.pdf けど、これ見たら出来ました! pipでインストールしないといけないですが Pythonで全部作る前提でだとよさそうな感じがしました。 pythonだけで自己完結するというのも使いやすい点かもしれないですね。
guest

0

参考情報

Pythonではじめるアプリ開発 ②:Python GUI編 その1

投稿2021/04/10 08:52

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xail2222

2021/04/10 09:21

情報ありがとうございます。 導入編ということで、私にもわかりやすかったです。 ツリービューの紹介もありましたが、色々組み込んでいけば 色々作れそうな感じがしました。 pythonのGUIと問うているのだから、tkinterやpysimpleguiの方が適切かもしれないですね。
guest

0

.netで画面を作って、その画面からpythonのプログラムを実行させる。

コマンド引数で指定したり、パラメータファイルで内容をやり取りしたり
しないといけないですが「試そうとしている事2」よりはシンプルかなと思ってます。

で良いなら、画面をwshで作るのが簡単そうかなと
今風ならpowershellでWindows.Forms使うとかだと思いますけど、自分がpowershell詳しく無いのでシンプル化どうかは分かりません

投稿2021/04/08 01:08

hentaiman

総合スコア6426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xail2222

2021/04/08 15:02

wshで画面ですか…。ちょっとイメージがつかないです。 vbsでmsgboxとかinputboxとかってことですか? powershellは、ちょっと苦手です。 スクリプトファイルを実行させるのに権限がどうのこうのと言われ もうそれでやめてしまいました。
hentaiman

2021/04/08 15:39

python実行するwscriptを作って画面はhtml(hta)で作ってwscriptを呼び出すだけだと思いましたが、権限どうのこうのについては考慮してません
xail2222

2021/04/08 15:57 編集

もしやとは思いましたがhtaですか。確かに使えますね。office不要ですしインストールも不要、テキストエディタさえあれば作れますしね GUIとしては弱い印象が有りますが用途によっては十分ですね。htaはごく稀に作ったりしますが現役という印象が余りなかったです。 悩ましい感じがします。わざわざWSHからpythonを呼ぶという発想も無かったです。でも、有りな気がしてきました。htaは権限どうこう言われないですしね。教えて頂きありがとうございました
xail2222

2021/04/09 13:49

とりあえずwscriptから起動ということで Dim objWsh Set objWsh = WScript.CreateObject("WScript.Shell") objWsh.Run "C:\Tool\anaconda3\envs\test\python.exe C:\work\python\TestPySimpleGUI.py",False,True で、起動できることまで確認しました。 後はhtmlで画面を作る手間とtkinterとかで画面を作る手間の比較が必要という感じですね。 とtkinterの事も調べていくうちに少しずつ分かってきた気がします。
hentaiman

2021/04/09 13:59

tkinterもpysimpleguiも試した程度にしか使用経験ないですが、tkinter使うぐらいならpysimpleguiの方が雰囲気でコピペして良さげ動くものが出来る分良いと思います
xail2222

2021/04/09 14:29

アドバイスありがとうございます。 tkinterがまだ十分分ってないので比較が出来てないのですが、確かにpysimpleguiはすぐに使い方が分りました。 コードでGUIを記述して自分の環境で使う分にはpysimpleguiで良さそうですね。
guest

0

tkinterで、GUIビルダ(例えばPAGE)を利用するという方法
wxPythonでGUIビルダ(例えばwxFormBuilderとかwxGlade)を利用する方法
色々と触ってみて、ご自分に合ったものを選択されるとよろしいかと。

投稿2021/04/08 00:37

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xail2222

2021/04/08 00:52

GUIビルダは存在を知りませんでした。紹介ありがとうございます 何が良いかは用途やプログラマーのスキル次第ですね ただ色々な組合せが乱立するのは保守的観点から避けたいと思ってます いろいろ試してみてよさそうなのを探してみます
xail2222

2021/04/09 13:31

PAGEインストールしてみました。 ただ、pythonにパスを通してない環境だったため起動せず このためpage.batを修正して起動するようにしました。 で、画面を作ってみてpythonのソースが作成できるところまで確かめました。 ただ、tkinterのイベントの制御が分ってないからか イベントの処理を実装する方法がわからない状態でした。 tkinter勉強したうえで使うべきビジュアル的にデザインできるツールと感じました (よくわかってないので、見当違いかもしれませんが)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問