星田さんのプログ記事に付いて。
いよいよTkinterを使ったグラフィカルでインタラクティブな(いや、間違ってないんだけどなんか軽いなw)部分に入ってきたので別記事で記録を残そう。
ああ、前からチラチラ言ってたけど、PythonでGUIやりたいのね。
なるほど。
じゃあ、その「12歳からはじめるゼロからのPython」って本は知らないし、中で紹介してるかどうかは知らないんですが。
まず前提から。
大体、UNIX系のプログラマってWindows系のプログラマと違ってそもそもGUIプログラミングが大っ嫌いで(笑)。
まぁ、本当の事を言うとWindows系プログラマもGUIプログラミングは根から言うと嫌いなんだろうけど(笑)。
ただ、Windows系の人って「ユーザーがそれを求める以上、応える必要がある」って考えてる人ばっかなのよ。やっぱそういうプラットフォームだから。
CLIのプログラム、なんてWindowsのユーザーは使わないでしょ?
だからメチャクチャ頑張ってる。
もう一つ、Windowsのプログラマがそれでも頑張ってられるのは、なんつってもMicrosoftのサポートが手厚いわけ。
前、WindowsはMicrosoft言語にしか優しくない、って書いたけど、逆に言うとMicrosoft言語を使う以上はGUIなんかもシステムとして手厚くサポートしてくれてるのね。ドキュメンテーションもメチャクチャ分かりやすく書いてるし。
反面、実はそういう土壌はUNIXはもとより、Linuxには無いわけなんです。
で、なんでそうGUIがややこしいのか、っつーと、システムによって映像出力の回路、ないしはデバイスに直接関わる部分が大幅に違うから、なんですよ。
今はまだマシになったんだけど(要するにグラフィックボード/GPUを作って売れる会社が結果二社くらいしか残ってない)、グラフィック用のデバイスとか、設計方法とか全然違うわけじゃない。共通の部分が本当にあるのかどうかさえ疑わしい。
あるいは、昔を知ってるなら、SHARP X68000とNEC PC-9801の画像回路が同じだった、って信じられないでしょ?そういう時代が長く続いたわけ。
もちろん、CLIの世界でもCPUが違った場合はそうなんだけど、根が単純(文字列情報とか)だったから「少なくともソフトウェア上やプログラミング言語上である程度の共通フォーマットを作ろうぜ」的な事は早く進んだんだけど、生憎GUIに関してはまだまだ、なのね。
それでもある程度「共通の枠組みを作ろう」って言う、公的じゃないんだけど、草の根運動的な事があって、ツールキットとしてある程度提供なされたものの一つにTcl/Tkと言うGUIスクリプト言語があった、のです。
まぁ、草の根、っつってもかつてのSUN Microsystemsがスポンサリングしてたもの、なんですが。
そしてこのTcl/TkってのがPythonのTkinterの基礎です。っつーか、ぶっちゃけ、Pythonのパッケージの中には、Tcl/Tkって言う「Pythonとは全く別のGUI用言語処理系」が丸ごと入っている。
んで、そのテのGUI系ツールキットってのはUNIX/Linux生まれでも色々あるんですが、それでもメンド臭いの(笑)。
特徴的なのは
- GUIは単純な事をやらせる程度でも大量のコードを書かないとならない
- 大量のコードを書かなきゃいけない割には定型的なコードばっか多くてつまらない
と。
なんでこんなにクッソ大量にクッソつまらないコードを書かないとならんのか?
Windowsの連中はこんなつまらん事をいっつもやってるのか?
答えは「いざとなったらやる。でも必要がないならやらない。」です。
ここがWindowsのGUI作成の優秀なトコなんですが。
通常GUI Builderって呼ばれるモノがあるのね。ある意味MicrosoftのVisual HogeみたいなIDEにはビルトインになってるんだけど。
要するに、GUIの「部品」をマウスでペタペタ貼って画面を作っていくんだ。
こういうのでWindowをデザインしつつコードを組んでいく、ってのがWindowsプログラミングの秘訣で(笑)、1990年代辺りからずーっとこういう事やってんのね。
一時期はRAD(Rapid Application Development = 速いソフト開発?)とか呼んでたぐらいなんですが。
要するに、Pythonとかの・・・まぁ、Pythonは正統なUNIX生まれじゃあないんだけど、取り敢えずUNIX/Linux系言語の大まかな欠点は、こういうシステムがパッと見つからない・・・要するにあってもバラバラな辺り、なんです。
っつーことはさ。TkinterのGUI Builderが存在すれば労力が軽減する、ってワケじゃない?GUIのコード書かなくてもその部分だけは自動で生成してくれるんだから。
実はいくつか存在するんです。
基本的にはPAGE自体がPythonで書かれてて、だからフォルダを解凍したらそのままpage.pyをダブルクリックすれば何とかなるのかしらん。
あるいは、Windows用の.exeが入ってるような事がマニュアルに書いてあったんで、Windowsだとそもそもダウンロードされるフォルダの構成が違うのかもしんない。
いずれにせよ、このソフト自体が英語なんで、せっかくGUIプログラミングの本を持ってるのなら、GUI Builderが生成するコードと手書きで書くべきコードを突き合わせてみれば良いんじゃないかしらん。
どっちにせよ、手元にGUIのコードを「自動生成」させるツールは持っておいて損はないと思います。それくらいGUIのコードを書くのはメンド臭いんで。
以上。
※: 基本的な使い方はこのページを参照 =>【Python tkinter】GUI作成ソフト「PAGE」使ってみた