Следующий код демонстрирует проблему с определенными курсорами wx в Windows (курсоры OSX имеют белый контур), а именно: они все черные и поэтому полностью невидимы на черном фоне.
import wx
app = wx.PySimpleApp()
f = wx.Frame(None)
f.SetBackgroundColour(wx.Color(0))
f.SetCursor(wx.StockCursor(wx.CURSOR_CROSS))
f.Show()
app.MainLoop()
Интересно, нашел ли кто-нибудь способ исправления значков Windows или есть исправление, о котором я не знаю.
Более конкретная проблема, с которой я сталкиваюсь, заключается в том, что wx-бэкэнд matplotlibs используетwx.CURSOR_CROSS для масштабирования графиков imshow, которые я использую для отображения изображений, которые в основном черные.Я еще не нашел способ настроить курсоры, которые выбирает mpl, но я решил, что задам вопрос, пока копаю.
Спасибо, Адам
Примечание: Использование wxPython версии 2.8.10.1 и matplotlib версий 0.99 и 1.0
PROGRESS: Мне кажется, что я могу хотя бы сделать свой собственный курсор, выполнив следующее, но я очень расстроен, обнаружив, что естья не могу нигде включать белый цвет.Документация на это ужасна.
import numpy as np
buf = np.ones((16,16,3), dtype='uint8') * 127 # pixels untouched by the following operations will outline the crosshair shape (wish they could be white)
buf[7,:,:] = 0 # horizontal black line
buf[:,7,:] = 0 # vertical black line
buf[:6,:6, :] = 255 # evidently values > 127 are interpreted as alpha
buf[9:,:6, :] = 255
buf[9:, 9:, :] = 255
buf[:6, 9:, :] = 255
im = wx.ImageFromBuffer(16, 16, buf.tostring()) # passing a separate alpha buffer just gets ignored
im.SetOptionInt(wx.IMAGE_OPTION_CUR_HOTSPOT_X, 7)
im.SetOptionInt(wx.IMAGE_OPTION_CUR_HOTSPOT_Y, 7)
cursor = wx.CursorFromImage(im)