Skip to content

Commit c28254f

Browse files
committed
Working layout for slice widget
1 parent 2f5e92a commit c28254f

File tree

4 files changed

+62
-0
lines changed

4 files changed

+62
-0
lines changed

examples/slice.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"""
2+
1D slices
3+
=========
4+
"""
5+
import napari
6+
7+
viewer = napari.Viewer()
8+
viewer.open_sample("napari", "kidney")
9+
10+
viewer.window.add_plugin_dock_widget(
11+
plugin_name="napari-matplotlib", widget_name="1D slice"
12+
)
13+
14+
if __name__ == "__main__":
15+
napari.run()

src/napari_matplotlib/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@
66

77
from .histogram import * # NoQA
88
from .scatter import * # NoQA
9+
from .slice import * # NoQA

src/napari_matplotlib/napari.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,16 @@ contributions:
1010
python_name: napari_matplotlib:ScatterWidget
1111
title: Make a scatter plot
1212

13+
- id: napari-matplotlib.slice
14+
python_name: napari_matplotlib:SliceWidget
15+
title: Plot a 1D slice
16+
1317
widgets:
1418
- command: napari-matplotlib.histogram
1519
display_name: Histogram
1620

1721
- command: napari-matplotlib.scatter
1822
display_name: Scatter
23+
24+
- command: napari-matplotlib.slice
25+
display_name: 1D slice

src/napari_matplotlib/slice.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import napari
2+
from qtpy.QtWidgets import QComboBox, QHBoxLayout, QSpinBox
3+
4+
from napari_matplotlib.base import NapariMPLWidget
5+
6+
__all__ = ["SliceWidget"]
7+
8+
_dims = ["x", "y", "z"]
9+
10+
11+
class SliceWidget(NapariMPLWidget):
12+
def __init__(self, napari_viewer: napari.viewer.Viewer):
13+
super().__init__(napari_viewer)
14+
15+
self.layer = self.viewer.layers[-1]
16+
17+
button_layout = QHBoxLayout()
18+
self.layout().addLayout(button_layout)
19+
20+
self.dim_selector = QComboBox()
21+
button_layout.addWidget(self.dim_selector)
22+
23+
self.selectors = {}
24+
for d in _dims:
25+
self.selectors[d] = QSpinBox()
26+
button_layout.addWidget(self.selectors[d])
27+
28+
self.update_dim_selector()
29+
self.viewer.layers.selection.events.changed.connect(
30+
self.update_dim_selector
31+
)
32+
33+
def update_dim_selector(self) -> None:
34+
"""
35+
Update options in the dimension selector from currently selected layer.
36+
"""
37+
dims = ["x", "y", "z"]
38+
self.dim_selector.clear()
39+
self.dim_selector.addItems(dims[0 : self.layer.data.ndim])

0 commit comments

Comments
 (0)