Skip to content

Commit dbae65c

Browse files
committed
Add parent kwargs
Fix parent typing Fix QWidget import
1 parent c8d290c commit dbae65c

File tree

4 files changed

+45
-22
lines changed

4 files changed

+45
-22
lines changed

src/napari_matplotlib/base.py

Lines changed: 8 additions & 4 deletions
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,8 +43,12 @@ 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()
@@ -53,7 +57,7 @@ def __init__(self, napari_viewer: napari.viewer.Viewer):
5357
self.canvas.figure.patch.set_facecolor("none")
5458
self.canvas.figure.set_layout_engine("constrained")
5559
self.toolbar = NapariNavigationToolbar(
56-
self.canvas, self
60+
self.canvas, parent=self
5761
) # type: ignore[no-untyped-call]
5862
self._replace_toolbar_icons()
5963

src/napari_matplotlib/histogram.py

Lines changed: 11 additions & 6 deletions
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

src/napari_matplotlib/scatter.py

Lines changed: 18 additions & 8 deletions
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

src/napari_matplotlib/slice.py

Lines changed: 8 additions & 4 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy