Le code suivant illustre un problème avec certains curseurs wx sous Windows (les curseurs OSX ont un contour blanc) ... à savoir, ils sont tous noirs, et donc complètement invisibles sur fond noir .Correctif pour les curseurs wx tout en noir sur Windows
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()
Je me demande si quelqu'un a trouvé un moyen de patcher les icônes des fenêtres, ou s'il y a une solution pour cela que je ne connais pas. Le problème plus spécifique que je rencontre est que le backend wx de matplotlibs utilise le wx.CURSOR_CROSS pour zoomer sur des tracés imshow, que j'utilise pour afficher des images qui sont principalement noires. Je n'ai pas encore trouvé un moyen de personnaliser les curseurs que mpl choisit, mais j'ai pensé que je poserais la question pendant que je creuse.
Merci, Adam
Remarque: En utilisant la version wxPython 2.8.10.1 et les versions 0.99 et 1.0 matplotlib
PROGRÈS: me semble pouvoir au moins faire mon propre curseur en faisant la suivant, mais je suis extrêmement frustré de constater qu'il n'y a aucun moyen pour moi d'inclure la couleur blanche n'importe où. La documentation à ce sujet est horrible.
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)