22

matplotlib-plots を描画するための小さな Tkinter GUI を開発しています。(いくつかのエントリが含まれており、その内容に従ってプロットを組み立てます。)

http://matplotlib.org/examples/user_interfaces/embedding_in_tk.htmlに従ってプロットウィジェットを設計しましたが、パックの代わりにグリッドを使用するだけです:

canvas = FigureCanvasTkAgg(fig, master=root)
canvas.get_tk_widget().grid(row=1,column=4,columnspan=3,rowspan=20)

その部分は機能します。ただし、NavigationToolbar を同じ方法で埋め込むと、そうではありません。次の行を含めると、Tkinter はエラーなしで失敗します。

toolbar = NavigationToolbar2TkAgg( canvas, root )
canvas._tkcanvas.grid(row=22,column=4)

これは、NavigationToolbar がpack内部的に呼び出しておりpackgridうまくいかないためです。ただし、私はグリッドが好きで、NavigationToolbar を使用できるようにするためだけに GUI 全体を再設計する必要はありません。

グリッド経由で NavigationToolbar2TkAgg を使用できるようにするための回避策はありますか? (ここで「サブクラス化してオーバーロードする」というアドバイスを見つけましたが、その方法がわかりません。)

どんな助けでも大歓迎です!

4

4 に答える 4

15

空のフレームを作成して、そのフレームに を入れることはできますNavigationToolbarか? NavigationToolbar意志がそのフレームに詰め込まれていると思います。その後、フレームでグリッドを使用できます。

于 2012-10-16T12:40:36.460 に答える