mieki256's diary



2019/11/09() [n年前の日記]

#1 [tkinter][python] tkinterを勉強中

Python + pycairo で描いた何かしらを tkinter を使ってGUIで表示できないか試しているところ。

ちなみに、pycairo の Surface を tkinter の PhotoImage に変換するには、PIL (Pillow) の Image と ImageTk を使う。

_python - Cairo with tkinter? - Stack Overflow

Canvas上での画像表示位置がおかしい。 :

pycairo の Surface を、Tk の Label上に表示することはできたけど。Tk の Canvas に表示しようとしたら妙な位置に表示されてしまって悩んでしまった。

以下のページを眺めていて、理由が分かった。

_Python の Tkinter で 画像を表示する - つきすけ の コーディング記

Canvas に画像を指定する際に、anchor の指定が絡んでたのだな…。anchor=tkinter.NW を指定することで、(0, 0) が左上になるのだろう。

今までは anchor を指定してなかったので、Canvas の真ん中が (0, 0) になってしまって、思った通りの位置に表示できなかったらしい。

#2 [pygtk] PyGTKを勉強中

pycairo を使う場合はえてして PyGTK or PyGObject もついてくるわけだし、pycairo の描画結果を PyGTK で表示したほうがいいかなと思い始めて、PyGTK について勉強し始めたところ。

「drawable is not a pixmap or window」が気になる。 :

色々な Widget を表示して、アプリっぽいレイアウトになるように動作確認をしていたけれど。Pythonスクリプトを終了させるタイミングで、妙な警告メッセージが表示されて困ったり。

> python pygtk_helloworld2.py
                        
pygtk_helloworld2.py:120: GtkWarning: gdkdrawable-win32.c:2013 drawable is not a pixmap or window
  gtk.main()

環境は、Windows10 x64 1903 + Pythn 2.7.17 32bit + PyGTK 2.24.0。

ググってみたけれど、こうすれば回避できるという事例が見つからず。

gtk.DrawingArea() を使っているのがいかんのかと思ったけれど、今まで写経して動いていたスクリプト内でもガンガン使っているのに、そちらでは件の警告メッセージは出ないわけで。となると、そこではないよな…。

色々な Widget を消したり足したりしてるうちに分かってきた。入力欄が存在する Widget を表示すると、件の警告メッセージが表示される。例えば、gtk.SpinButton() とか、gtk.Entry() とかそのあたり。

入力欄が無いWidget、例えば gtk.Button() や gtk.Label() を代わりに表示すると、例のメッセージは出なくなった。しかし、入力ができないのでは、GUIアプリにならない…。

以下のページで、input method が云々が原因で、と言及されている。もしかするとそれと同じ現象、なのかもしれない。

_ubuntu 11.10 - Gdk-WARNING **: /build/....../gdkdrawable-x11.c:952 drawable is not a pixmap or window - Stack Overflow

以上、1 日分です。

過去ログ表示

Prev - 2019/11 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project