是否可以使用Python Tkinter制作自定义鼠标光标? (使用matplotlib和TkAgg后端)

时间:2009-12-09 22:25:09

标签: python matplotlib tkinter mouse-cursor

这可能只是一个普通的Python Tkinter问题,不一定是matplotlib问题。

因此,我正在使用Matplotlib“TkAgg”后端(使用TkInter将渲染渲染到Tk画布)在matplotlib上开发一套相当大的绘图功能。我正在使用matplotlib开箱即用的一些默认缩放功能...特别是默认matplotlib工具栏上的“缩放到框”按钮。我通过继承现有的“matplotlib.backends.backend_tkagg.NavigationToolbar2TkAgg”类来创建自己的工具栏。

差不多,这里的问题是我讨厌“Zoom to box”使用的默认图标(Tkinter“tcross”)。我已经想出如何使用不同的Tkinter内置游标(例如,这会将光标更改为“plus”而不是“tcross”):

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,我可以调用:

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

所以我真正喜欢的是当用户处于“缩放模式”时能够使用放大镜图标。我已经有一个.ppm的放大镜图标,我想用它和一切,但我无法弄清楚我的生活如何使用我的放大镜作为鼠标光标图标。是否可以在Python Tkinter中将自定义图像用作鼠标光标?救命啊!

平台备注:这需要在Mac OS X 10.5 +,RedHat Enterprise Linux 5以及可能的Solaris 10上运行,因此特定于平台的解决方案是不可取的。

1 个答案:

答案 0 :(得分: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”的手册页:

  

Tk的Macintosh版本支持所有X游标   和                 也将接受任何标准的Mac游标   包含                 ibeam,十字准线,手表,加号和箭头。另外,Tk   将                 加载Macintosh光标资源的类型crsr(颜色)   和                 CURS(黑色和白色)按资源名称   该                 应用程序及其所有开放动态库的资源   档                 将搜索指定的光标。如果有   冲突                 颜色游标将始终优先加载   黑色和                 白色游标。