3

これは一般的なPythonTkinterの質問であり、必ずしもmatplotlibの質問ではない可能性があります。

そのため、私はMatplotlib "TkAgg"バックエンド(TkInterを使用したTkキャンバスへのAggレンダリング)を使用して、matplotlib上にプロット機能のかなり大きなスイートを開発している最中です。matplotlibが提供するデフォルトのズーム機能の一部をすぐに使用しています...具体的には、デフォルトのmatplotlibツールバーの[Zoomtobox]ボタンです。既存の「matplotlib.backends.backend_tkagg.NavigationToolbar2TkAgg」クラスをサブクラス化して、独自のツールバーを作成しています。

ここでの問題は、「Zoomtobox」が使用するデフォルトのアイコン(Tkinterの「tcross」)が嫌いなことです。別のTkinter組み込みカーソルを使用する方法を理解しました(たとえば、これによりカーソルが「tcross」ではなく「plus」に変更されます)。

import matplotlib
matplotlib.use('TkAgg')

import matplotlib.backend_bases
import matplotlib.backends.backend_tk_agg

matplotlib.backends.backend_tkagg.cursord[matplotlib.backend_bases.cursors.SELECT_REGION] = "plus"

そして一般的に、現在のマウスカーソルをツールバークラスの組み込みのTkinterカーソルの1つに変更するには、次のように呼び出すことができます。

self.window.configure(cursor="cursor_name")

ですから、私が本当に望んでいるのは、ユーザーが「ズームモード」のときに虫眼鏡アイコンを使用できるようにすることです。使用したい虫眼鏡アイコンの.ppmとすべてがすでにありますが、虫眼鏡をマウスカーソルアイコンとして使用する方法を一生理解できません。Python Tkinterでカスタム画像をマウスカーソルとして使用することは可能ですか?ヘルプ!

プラットフォームに関する注意:これはMac OS X 10.5以降、RedHat Enterprise Linux 5、場合によってはSolaris 10で機能する必要があるため、プラットフォーム固有のソリューションは望ましくありません。

4

1 に答える 1

3

次のようなものは、UNIX X11 XBM ファイルで機能します。

import Tkinter
t = Tkinter.Tk()
t.configure(cursor=('@/usr/include/X11/bitmaps/star', '/usr/include/X11/bitmaps/starMask', 'black', 'white'))
t.mainloop()

Macについては、「Tk_GetCursorFromData」のmanページから:

Tk の Macintosh バージョンは、すべての X カーソルをサポートし、ibeam、crosshair、watch、plus、および arrow を含む標準の Mac カーソルも受け入れます。さらに、Tk はリソースの名前によって、タイプ crsr (カラー) および CURS (白黒) の Macintosh カーソル リソースをロードします。
アプリケーションとそのすべての開いている動的ライブラリのリソース ファイルで、指定されたカーソルが検索されます。競合がある場合、白黒のカーソルよりも常にカラー カーソルが優先して読み込まれます。

于 2009-12-10T16:53:34.897 に答える