如何在wxPython中创建带有自定义热点的自定义光标?

0 投票
1 回答
591 浏览
提问于 2025-04-18 17:20

我在用wxPython做应用的时候,想要创建一个自定义的光标,并且还想设置光标的热点位置(也就是光标尖端的位置),但是找了很久都没找到好的例子和解释,关于wxPython和wxWidgets是怎么处理光标的创建和使用的。下面是我的解决方案。

1 个回答

0

我想创建的光标需要一个不同的“热点”(比如光标的尖端位置)。我首先发现,wxPython的图像有一个选项,可以设置热点的x和y坐标。但是,wxPython的光标类只有在使用特定文件类型时,才会使用这些热点。

wx.Cursor init 文档中,他们解释说……

参数hotSpotX和hotSpotY只有在资源/图像文件中没有热点信息时才会使用(例如,在wxMSW下使用BITMAP_TYPE_ICO或在wxGTK下使用BITMAP_TYPE_XPM时)。

为了使用自定义的热点,我把我的PNG图像转换成了ICO文件,使用了一个在线转换工具。然后我就可以用以下代码来创建一个带有正确热点的自定义光标:

# The point (6, 28) is the location of my hotspot. This is in reference
# to the top left corner of the image.
cursor = wx.Cursor(os.path.join("path", "to", "cursor.ico"), wx.BITMAP_TYPE_ICO, 6, 28)
frame.SetCursor(cursor)

撰写回答