如何在wxPython中创建带有自定义热点的自定义光标?
我在用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)