matplotlib / matplotlib/ipympl
Exception not handled in widgetlock()
Nessuno ha ancora preso questa issue.
- Lingua principale
- Jupyter Notebook
- Stelle
- 1.7k
- Fork
- 234
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
## Describe the issue
I want to use a selector `matplotlib.widgets.RectangleSelector` , it is incompatible with zoom and pan
So I try to call widget lock to prevent user from using zoom in the same time.
minimum code:
```python
%matplotlib ipympl
import matplotlib.pyplot as plt
fig,ax = plt.subplots()
ax.plot([0,1],[0,1])
fig.canvas.widgetlock(ax) # get the widget lock
```
if you then hit the zoom or pan matplotlib button, which also try to get the lock, you get
```
ValueError Traceback (most recent call last)
File ~/spike/venvOW/lib/python3.9/site-packages/ipympl/backend_nbagg.py:279, in Canvas._handle_message(self, object, content, buffers)
276 self.manager.handle_json(content)
278 else:
--> 279 self.manager.handle_json(content)
...
File ~/spike/venvOW/lib/python3.9/site-packages/matplotlib/widgets.py:42, in LockDraw.__call__(self, o)
40 """Reserve the lock for *o*."""
41 if not self.available(o):
---> 42 raise ValueError('already locked')
43 self._owner = o
ValueError: already locked
```
Alternatively, I could use the right click for the selector, but I have not found a way to restrict zoom and pan to left click only.
## Versions
```
3.9.7 (default, Sep 16 2021, 13:09:58)
[GCC 7.5.0]
ipympl version: 0.8.8
Selected Jupyter core packages...
IPython : 8.0.1
ipykernel : 6.9.1
ipywidgets : 7.6.5
jupyter_client : 7.1.2
jupyter_core : 4.9.2
jupyter_server : 1.13.5
jupyterlab : not installed
nbclient : 0.5.11
nbconvert : 6.4.2
nbformat : 5.1.3
notebook : 6.4.8
qtconsole : 5.2.2
traitlets : 5.1.1
```
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Riproduci il problema con l’esempio minimo di Jupyter, quindi ispeziona ipympl/backend_nbagg.py e matplotlib/widgets.py in corrispondenza della gestione del lock del widget mostrata nel traceback. Conferma il comportamento previsto quando un’operazione di zoom o panoramica tenta di acquisire un lock occupato e aggiungi una copertura che dimostri che l’interazione non produce più un ValueError non gestito.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- jupyter-notebook, python
- Ambito
- frontend
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100