Skip to content

Commit 00b69c1

Browse files
committed
Add parent kwargs
Fix parent typing Fix QWidget import
1 parent d5f5872 commit 00b69c1

File tree

4 files changed

+45
-22
lines changed

4 files changed

+45
-22
lines changed

Diff for: src/napari_matplotlib/base.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import os
22
from pathlib import Path
3-
from typing import List, Tuple
3+
from typing import List, Optional, Tuple
44

55
import napari
66
from matplotlib.axes import Axes
@@ -43,16 +43,20 @@ class NapariMPLWidget(QWidget):
4343
List of currently selected napari layers.
4444
"""
4545

46-
def __init__(self, napari_viewer: napari.viewer.Viewer):
47-
super().__init__()
46+
def __init__(
47+
self,
48+
napari_viewer: napari.viewer.Viewer,
49+
parent: Optional[QWidget] = None,
50+
):
51+
super().__init__(parent=parent)
4852

4953
self.viewer = napari_viewer
5054
self.canvas = FigureCanvas()
5155

5256
self.canvas.figure.patch.set_facecolor("none")
5357
self.canvas.figure.set_layout_engine("constrained")
5458
self.toolbar = NapariNavigationToolbar(
55-
self.canvas, self
59+
self.canvas, parent=self
5660
) # type: ignore[no-untyped-call]
5761
self._replace_toolbar_icons()
5862

Diff for: src/napari_matplotlib/histogram.py

+11-6
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1+
from typing import Optional
2+
3+
import napari
14
import numpy as np
5+
from qtpy.QtWidgets import QWidget
26

37
from .base import NapariMPLWidget
8+
from .util import Interval
49

510
__all__ = ["HistogramWidget"]
611

7-
import napari
8-
9-
from .util import Interval
10-
1112
_COLORS = {"r": "tab:red", "g": "tab:green", "b": "tab:blue"}
1213

1314

@@ -19,8 +20,12 @@ class HistogramWidget(NapariMPLWidget):
1920
n_layers_input = Interval(1, 1)
2021
input_layer_types = (napari.layers.Image,)
2122

22-
def __init__(self, napari_viewer: napari.viewer.Viewer):
23-
super().__init__(napari_viewer)
23+
def __init__(
24+
self,
25+
napari_viewer: napari.viewer.Viewer,
26+
parent: Optional[QWidget] = None,
27+
):
28+
super().__init__(napari_viewer, parent=parent)
2429
self.add_single_axes()
2530
self.update_layers(None)
2631

Diff for: src/napari_matplotlib/scatter.py

+18-8
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import numpy.typing as npt
55
from magicgui import magicgui
66
from magicgui.widgets import ComboBox
7+
from qtpy.QtWidgets import QWidget
78

89
from .base import NapariMPLWidget
910
from .util import Interval
@@ -20,8 +21,12 @@ class ScatterBaseWidget(NapariMPLWidget):
2021
# the scatter is plotted as a 2D histogram
2122
_threshold_to_switch_to_histogram = 500
2223

23-
def __init__(self, napari_viewer: napari.viewer.Viewer):
24-
super().__init__(napari_viewer)
24+
def __init__(
25+
self,
26+
napari_viewer: napari.viewer.Viewer,
27+
parent: Optional[QWidget] = None,
28+
):
29+
super().__init__(napari_viewer, parent=parent)
2530

2631
self.add_single_axes()
2732
self.update_layers(None)
@@ -113,16 +118,21 @@ class FeaturesScatterWidget(ScatterBaseWidget):
113118
napari.layers.Vectors,
114119
)
115120

116-
def __init__(self, napari_viewer: napari.viewer.Viewer):
117-
super().__init__(napari_viewer)
118-
self._key_selection_widget = magicgui(
121+
def __init__(
122+
self,
123+
napari_viewer: napari.viewer.Viewer,
124+
parent: Optional[QWidget] = None,
125+
):
126+
super().__init__(napari_viewer, parent=parent)
127+
self._key_selection_function_gui = magicgui(
119128
self._set_axis_keys,
120129
x_axis_key={"choices": self._get_valid_axis_keys},
121130
y_axis_key={"choices": self._get_valid_axis_keys},
122131
call_button="plot",
123132
)
124-
125-
self.layout().addWidget(self._key_selection_widget.native)
133+
_key_selection_widget = self._key_selection_function_gui.native
134+
_key_selection_widget.setParent(self)
135+
self.layout().addWidget(_key_selection_widget)
126136

127137
@property
128138
def x_axis_key(self) -> Optional[str]:
@@ -231,7 +241,7 @@ def _on_update_layers(self) -> None:
231241
Called when the layer selection changes by ``self.update_layers()``.
232242
"""
233243
if hasattr(self, "_key_selection_widget"):
234-
self._key_selection_widget.reset_choices()
244+
self._key_selection_function_gui.reset_choices()
235245

236246
# reset the axis keys
237247
self._x_axis_key = None

Diff for: src/napari_matplotlib/slice.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
from typing import Any, Dict, Tuple
1+
from typing import Any, Dict, Optional, Tuple
22

33
import napari
44
import numpy as np
55
import numpy.typing as npt
6-
from qtpy.QtWidgets import QComboBox, QHBoxLayout, QLabel, QSpinBox
6+
from qtpy.QtWidgets import QComboBox, QHBoxLayout, QLabel, QSpinBox, QWidget
77

88
from .base import NapariMPLWidget
99
from .util import Interval
@@ -22,9 +22,13 @@ class SliceWidget(NapariMPLWidget):
2222
n_layers_input = Interval(1, 1)
2323
input_layer_types = (napari.layers.Image,)
2424

25-
def __init__(self, napari_viewer: napari.viewer.Viewer):
25+
def __init__(
26+
self,
27+
napari_viewer: napari.viewer.Viewer,
28+
parent: Optional[QWidget] = None,
29+
):
2630
# Setup figure/axes
27-
super().__init__(napari_viewer)
31+
super().__init__(napari_viewer, parent=parent)
2832
self.add_single_axes()
2933

3034
button_layout = QHBoxLayout()

0 commit comments

Comments
 (0)