编程语言
首页 > 编程语言> > 是否可以使用Python Tkinter创建自定义鼠标光标? (将matplotlib与TkAgg后端一起使用)

是否可以使用Python Tkinter创建自定义鼠标光标? (将matplotlib与TkAgg后端一起使用)

作者:互联网

这很可能只是一个通用的Python Tkinter问题,不一定是matplotlib问题.

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

几乎,这里的问题是我讨厌“缩放到方框”使用的默认图标(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上可行,因此不希望使用特定于平台的解决方案.

解决方法:

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”的手册页中进行:

The Macintosh version of Tk supports all of the X cursors
and
will also accept any of the standard Mac cursors
including
ibeam, crosshair, watch, plus, and arrow. In addition, Tk
will
load Macintosh cursor resources of the types crsr (color)
and
CURS (black and white) by the name of the of the resource.
The
application and all its open dynamic library’s resource
files
will be searched for the named cursor. If there are
conflicts
color cursors will always be loaded in preference to
black and
white cursors.

标签:mouse-cursor,matplotlib,tkinter,python
来源: https://codeday.me/bug/20191210/2101306.html