Introduction
Ce tutoriel vous guidera tout au long du processus d'ajout d'un curseur dans WX pour rapporter les coordonnées de données. Nous utiliserons Matplotlib, une bibliothèque de tracé pour Python qui fournit des outils pour créer une variété de graphiques, diagrammes et courbes.
Conseils sur la VM
Une fois le démarrage de la VM terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder au carnet Jupyter Notebook pour pratiquer.
Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter Notebook.
Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.
Créer une trame de canevas
Tout d'abord, nous allons créer une trame de canevas qui contiendra le tracé Matplotlib. Nous ajouterons un tracé sinusoïdal pour démontrer la fonctionnalité du curseur.
class CanvasFrame(wx.Frame):
def __init__(self, ):
super().__init__(None, -1, 'CanvasFrame', size=(550, 350))
## Créer une Figure et ajouter un sous-graphe
self.figure = Figure()
self.axes = self.figure.add_subplot()
t = np.arange(0.0, 3.0, 0.01)
s = np.sin(2*np.pi*t)
## Tracer la courbe sinusoïdale
self.axes.plot(t, s)
self.axes.set_xlabel('t')
self.axes.set_ylabel('sin(t)')
## Créer un FigureCanvas pour afficher le tracé
self.figure_canvas = FigureCanvas(self, -1, self.figure)
## Lier l'événement motion_notify_event pour mettre à jour la barre de statut
self.figure_canvas.mpl_connect(
'motion_notify_event', self.UpdateStatusBar)
## Lier l'événement enter_window pour changer le curseur
self.figure_canvas.Bind(wx.EVT_ENTER_WINDOW, self.ChangeCursor)
## Créer un sizer et ajouter le FigureCanvas à celui-ci
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self.figure_canvas, 1, wx.LEFT | wx.TOP | wx.GROW)
self.SetSizer(self.sizer)
self.Fit()
## Créer une barre de statut pour rapporter l'emplacement du curseur
self.statusBar = wx.StatusBar(self, -1)
self.SetStatusBar(self.statusBar)
## Créer une barre d'outils pour naviguer dans le tracé
self.toolbar = NavigationToolbar2Wx(self.figure_canvas)
self.sizer.Add(self.toolbar, 0, wx.LEFT | wx.EXPAND)
self.toolbar.Show()
Changer le curseur
Ensuite, nous allons définir une méthode pour changer le curseur lorsqu'il entre dans la trame de canevas. Dans ce cas, nous changerons le curseur en un pointillé.
def ChangeCursor(self, event):
self.figure_canvas.SetCursor(wx.Cursor(wx.CURSOR_BULLSEYE))
Mettre à jour la barre de statut
Enfin, nous allons définir une méthode pour mettre à jour la barre de statut avec l'emplacement du curseur chaque fois que la souris se déplace sur le tracé.
def UpdateStatusBar(self, event):
if event.inaxes:
self.statusBar.SetStatusText(f"x={event.xdata} y={event.ydata}")
Sommaire
Félicitations ! Vous avez réussi à ajouter un curseur dans WX pour rapporter les coordonnées de données à l'aide de Matplotlib. En suivant les étapes décrites dans ce tutoriel, vous pouvez facilement personnaliser le curseur pour répondre à vos besoins.