見出し画像

活動報告15(2022年1月)

プロジェクト薬箱「Python編(中級2)」
 アルゴリズムを一通り終えて、より具体的なプログラミングへ。今月は、PythonのGUIであるtkinterを学んだ。これにより、Raspberry Piを中核とした薬箱のインターフェースの設計が可能となる。スマートフォンのアプリ全盛のこの時代に、CUIだけでは到底周囲に受け入れられないのは明らかだ。

ということで、10冊目:辛島信芳 (2019) 「Pythonをおぼえた人がGUIアプリケーション開発をするためのtkinter速習入門」。色々探したが、tkinterを解説した書籍はこれしか見つからなかった。最初に網羅的に学ぶためには、書籍に勝るものはないと考える。というのも、書籍の企画・構成から始まって出版に至るまでの各種段階において、出版社等の第三者の関与があるので内容の偏りが少なくなるので、その分野の全体像を俯瞰することが容易になるからだ。もっとも、参考書の選択肢がほとんどないことには不安を覚えた。

さて、肝心の内容は、各種ウィジェットについて一通りの解説があり、昔のWindowsを彷彿とさせるGUIなら簡単に作成できるようになる。一方で、GUIの表現力を上げようとすると、各ウィジェットのオプションを使いこなす必要が出てくるが、その部分までの解説はないので試行錯誤で感触をつかむ必要がある。例えば、ウィジェット配置においては、簡易度に応じpack()、grid()、place()の3種類のメソッドがあるが、イメージ通りの配置を実現するためには、frameを複数使い分け、適切なメソッドとオプションをフル活用しなければならない。また、能動的なGUIとするためには、ボタン動作を定義する仮想イベントのCallback関数や、ウィジェットと連動するWidget変数を用いるが、このあたりは独特の概念なので、実際に動かして理解する必要があるが、なかなかに難しい。
 そうやって苦労をして得た最大の収穫は、1冊目:京大教材演習で、突然にtkinterを用いた計算機が登場して理解できずにモヤモヤが残っていたが、半年ぶりにその部分を完璧に理解できたことだ。今となってはlambda関数も分かるし、クラスオブジェクトによるGUI作成が便利なことも実感できる。もっとも、クラス定義のコンストラクタにおいて、どの引数にselfを要するかの区別には、まだ一苦労している。

終えてみた感想としては、サンプルコードのダウンロードがないため全て手入力する必要があったが、導入本としては高評価できる。GUI自体が相当に奥深いので、説明不足の部分も多々あったが、そのあたりは専門家等のブログを参照にして理解を深めることができた。一例を挙げると、ウィンドウにおけるメニュー表示がWindows/Linuxとマックでは違いがあるので、GUIイメージに違いが生じることについては説明がなかった。マックでは、メニューが通常ウィンドウ内には無くリンゴマークの横にでき、メニューのtearoffも動作しない。全く同じPythonのコードでも走らせるPCのOSによって、GUIの振る舞いに変化が生じるというのは面白かった。

いいなと思ったら応援しよう!