lrcgfのブログ

趣味としてプログラミングを始めたので、そのあたりの話を中心に書いていくつもりです。

tkinterで画像のタグに数字のみは使えない?

(python3.3)
tkinterはpythonに標準で入ってるからとりあえず使ってみるにはいいのだが、どうもよく分からないことが多い。

>>> canvas.create_image(0,0,image=im, tags = '99')
1    # create_imageは戻り値として数値のidを発行して返す
>>> canvas.gettags(1)
('99',)     # id = 1のitemに貼ってあるtagをすべて取得
>>> canvas.find_withtag('99')
()      # しかしtagで検索しても存在しないといわれる
>>> canvas.find_all()
(1,)     # 全部表示させると、存在が確認できる   
>>> canvas.delete('99') # tag指定でdelete
>>> canvas.find_all()
(1,)    # delete できていない
>>> canvas.delete('1')  # id指定でdelete
>>> canvas.find_all()
()     # delete できた

ようするに、数字のタグはうまく機能しないということなんだけど、エラーが出るわけではない。
きちんとid(ここでは'1')が発行されるし、tagを取得すればちゃんと登録されている。
idを指定すれば問題なく振舞う。
find_allでも存在が確かめられる。だけど、tagで指定しようとすると、たぶんid指定と勘違いされてしまうのか何も起きない。でもfind_withtagでも引っかからないってどういうこと?
そもそもcreateしたのに、オブジェクトが渡されるわけじゃなくて数字のidが渡されるだけでそれで操作しろっていう、実体がない感じがすごく違和感ある。
もちろんtags = 'tag99'と数字以外を含めれば、問題なく扱える。

これも気付くまでかなりはまってしまったし、今でも腑に落ちない。