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'と数字以外を含めれば、問題なく扱える。
これも気付くまでかなりはまってしまったし、今でも腑に落ちない。