tooltip がないなんてやだやだやだ @ tkinter

ない、というか。

tooltip って存外重大でな、特に「伝統的従来的な PC では」。さすがにスマフォタイプのデバイスにツールチップは有用なのかどうか議論の余地があるけれど、とにかく「色んな理由で」なくてはならぬもの、なわけだ。

「なくてはならぬ」のは、実に「バカで情弱な蔑むべき初心者のため」なんかではなくて。それもないとは言わないけれど、そもそもが「GUI デザインのレイアウト」にかなりの自由度と柔軟性を担保してくれる「魔法の杖」足りうるわけよね。なにせたとえば「+」というボタンでいい、ツールチップで説明しちゃえるのなら。そうやってコンパクトなデザインを目指せる。それに「上級ユーザ」だって、キーバインド全部を記憶してる、てわけではないわけで、必要とあらばツールチップを参照する生活を送るわけだ。もっといえば、「ツールチップのおかげでマニュアルいらず」なのかもしれない、てことよさ。

つい先日から唐突に「数年ぶりの tkinter」してたもんで、「ツールチップ、ないんかぁ」でちょっと思考停止してたんだわ。使えるものは使っちまえよ発想が欠けてた。あぁそういえば。

てわけで:

 1 try:
 2     import Tkinter as tkinter  # python 2.x, but sorry, I'm not testing it.
 3 except ImportError:
 4     import tkinter
 5 import idlelib  # for ToolTip, etc.
 6 from idlelib.ToolTip import ToolTip
 7 # ...
 8 btn = tkinter.Button(frt, text="+")
 9 ToolTip(btvfrt1, 'toggle view/hide "nav step" control.')
10 # ...

みたいな。

「使えるものは使っちまえよ/Python は電池付きである」に関し、本当のところは多少気を付けるべきライブラリってのも、当たり前ながら存在はする。非常に自明なことだが、「標準添付ライブラリ」と一言で言っても、その各々の断片の「どの程度コア機能か」は全く違っていて、「ごった煮」志向がもともと強い Python では、安定しにくかったり安定していなかったりするライブラリも結構入っている。

idlelib は、名前から即座に何者か理解できる人とそうでない人がいるだろう。ワタシのようになんでも emacs で編集しちゃうような人の方が案外ピンと来ない可能性がある。「.py を右クリックして…」という操作に慣れている人はわかる。そう、「IDLE なる(ミニミニ) Python 開発環境」ね、idlelib は「その IDLE を作るためのライブラリ」で、「IDLE という別アプリの内緒」とはなってなくて、誰でも利用できる。上で見た通り。そして、当たり前だが「Python ユーザのために」IDLE は絶賛進化し続ける…ので、idlelib もそれに伴って進化する。

つまりは idlelib についての「情報」は、ひょっとすると「廃れやすい」かもしれない、ってハナシ。

今のところ「出ればいい」レベルでのツールチップはご覧の通り簡単に特にワタシには不満なく使えるけれど、「やだ」と思ってる人もいるようで、結構 idlelib の存在をしっていながらも自作してる人が多いらしい。


にしても、である。この idlelib のツールチップはまさしく「idlelib が」自力で実現しているものであって、すなわち(やはり)「tcl/tk には」ないのである。ので、「それへのシンプルなラッパー」に徹している tkinter そのものにもソレはない。

なんでだ、って思うんだよなぁ。世界一使いにくいリストボックスの話もそうなんだけれどさ、「これはとても歴史があって古いものだから」ってエクスキューズを、そんなに頑なに堅持しんでもええんじゃないのかいね、と。実際 tcl/tk 自身が今でもちゃんとアクティブで、バージョンアップも重ねているんだから、なんでこういう「最小限の現代化」が進まないんだろうかと。

まぁ歴史が長くなればなるほど「いらんしがらみ」てのは増えがちではあるけれどもね。「超絶に古いバージョンの tcl/tk 向けコード」の振る舞いを維持し続けたい、であるとかね、いわゆる「後方互換性」というやつね、これが歴史が古いものほど維持が大変、そう、それはわかるよ、わかるけれどもね、て話。

あと話はズレるが、最近の WEB ツールにツールチップなしで「説明のないボタンだらけ」のデザインをしてるのが非常に多くて、イラっとしてる。いい加減にして欲しいんだわ。Degoo とかもそうかな。どうにも「ボタンが少なくて単純な操作なら説明不要」みたいなユーザ不在の勝手な決断してるように思えて、腹が立つのよね。Degoo は特に「ただでさえ非常に使いにくい」ので余計にね。


2022-03-18追記:
「だから linux は嫌いなんだ」と言いたくなったりする話。あ、誤解されたらいかんわな。ワタシは「Unix ユーザ」なのであって、その Unix variant の one of であるところの「linux 文化」てヤツは実は好きではない。というか正確には「linux ディストリビューションにおけるパッケージマネージ」の押しつけがましいポリシーが嫌いだ、てことなんだけどね。

まさにそれに今さっき気付いた。たとえばワタシのヤツだと ffchopreview.py とか okcancel_or_timeout_dialog.py とかで実際に Hovertip (or ToolTip) を使ってたわけね。けど Windows Subsystem for Linux on Windows 11 で「tkinter は一応動くようだが、それ以前の問題として「idlelib がない」と抜かしやがる」問題に気付いてしまった。

これ、apt が勝手に python 本体と idle を分けてやがんのね。だから、sudo apt install python3.9 とかで python 本体を入れても idlelib は入らない。idlelib も欲しければ sudo apt install idle-python3.9 などとする必要がある。Linux ディストリビユーションって、ほんとこういうの多いの。OSS の本来の姿を、自分たちのポリシーで勝手に捻じ曲げるんだよね。だから「Python 公式ドキュメント」と平気で乖離するなんてことが起こるわけなんだが、なんでそれを是とするのか、ほんと理解出来ない。

にしてもほんと、「たかがツールチップごときで」てことよな。バカみたいだよ。