質問

私は、WindowsとMacの両方で使用する予定のPython GUIアプリを使用しています。 Tkinterのドキュメントは最高のものではなく、google-fuで失敗しました。

要するに、私はやっている:

c = Canvas(
    master=frame,
    width=settings.WINDOW_SIZE[0],
    height=settings.WINDOW_SIZE[1],
    background=settings.CANVAS_COLOUR
)
file = PhotoImage(file=os.path.join('path', 'to', 'gif'))
c.create_bitmap(position, image=file)
c.pack()
root.mainloop()

create_bitmap行をコメントアウトすると、アプリはうまく描画されます。コメントを戻すと、次のエラーが表示されます。

_tkinter.TclError:不明なオプション" -image"

どちらがおかしい。 Pythonテスト(つまり、_tkinter、Tkinterのインポート、および Tk()の実行)によると、Tkinterは問題ありません。それ以来、私はWindowsセットアップ(XP SP3、Python 2.6)に対してPILをインストールしましたが、PILが低レベルで重労働の一部を行っていることを想像していました。そうではないようです。それでも前述のエラーが表示されます。

既に貼り付けたコードを除く完全なスタックトレースは次のとおりです。

File "C:\Python26\lib\lib-tk\Tkinter.py", line 2153, in create_bitmap
return self._create('bitmap', args, kw)
File "C:\Python26\lib\lib-tk\Tkinter.py", line 2147, in _create
*(args + self._options(cnf, kw))))

誰でも光を当てることができますか?

役に立ちましたか?

解決

Tkには、ビットマップと画像の2種類のグラフィックがあります。画像には、ビットマップと写真の2つのフレーバーがあります。ビットマップ型のビットマップと画像は同じものではないため、ドキュメントが混乱します。 PhotoImageは、写真タイプの画像を作成し、キャンバスに画像オブジェクトを必要とするため、既に結論したように、解決策はcreate_imageを使用することです。

他のヒント

簡単な答え: create_imageを使用する場合は、create_bitmapを使用しないでください。

create_bitmap()メソッドには、 image 引数がありません。 bitmap 引数があります代わりに。

Tkinterでは、TclインタープリターがPythonプロセスに埋め込まれて実行されており、すべてのGUI相互作用がPythonとTclの間で行き来するという事実に起因するエラーが発生します。そのため、エラーはTclが「.create_bitmap呼び出しの-imageオプションを知りません」と応答するという事実から発生します。

いずれにせよ、ジェフが言ったように、おそらく create_image メソッドが必要です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top