488 lines
15 KiB
Python
488 lines
15 KiB
Python
from .artist import Artist
|
|
from .axes import Axes
|
|
from .backend_bases import FigureCanvasBase, Event, MouseEvent, MouseButton
|
|
from .collections import LineCollection
|
|
from .figure import Figure
|
|
from .lines import Line2D
|
|
from .patches import Circle, Polygon, Rectangle
|
|
from .text import Text
|
|
|
|
import PIL.Image
|
|
|
|
from collections.abc import Callable, Collection, Iterable, Sequence
|
|
from typing import Any, Literal
|
|
from numpy.typing import ArrayLike
|
|
from .typing import ColorType
|
|
import numpy as np
|
|
|
|
class LockDraw:
|
|
def __init__(self) -> None: ...
|
|
def __call__(self, o: Any) -> None: ...
|
|
def release(self, o: Any) -> None: ...
|
|
def available(self, o: Any) -> bool: ...
|
|
def isowner(self, o: Any) -> bool: ...
|
|
def locked(self) -> bool: ...
|
|
|
|
class Widget:
|
|
drawon: bool
|
|
eventson: bool
|
|
active: bool
|
|
def set_active(self, active: bool) -> None: ...
|
|
def get_active(self) -> None: ...
|
|
def ignore(self, event) -> bool: ...
|
|
|
|
class AxesWidget(Widget):
|
|
ax: Axes
|
|
canvas: FigureCanvasBase | None
|
|
def __init__(self, ax: Axes) -> None: ...
|
|
def connect_event(self, event: Event, callback: Callable) -> None: ...
|
|
def disconnect_events(self) -> None: ...
|
|
|
|
class Button(AxesWidget):
|
|
label: Text
|
|
color: ColorType
|
|
hovercolor: ColorType
|
|
def __init__(
|
|
self,
|
|
ax: Axes,
|
|
label: str,
|
|
image: ArrayLike | PIL.Image.Image | None = ...,
|
|
color: ColorType = ...,
|
|
hovercolor: ColorType = ...,
|
|
*,
|
|
useblit: bool = ...
|
|
) -> None: ...
|
|
def on_clicked(self, func: Callable[[Event], Any]) -> int: ...
|
|
def disconnect(self, cid: int) -> None: ...
|
|
|
|
class SliderBase(AxesWidget):
|
|
orientation: Literal["horizontal", "vertical"]
|
|
closedmin: bool
|
|
closedmax: bool
|
|
valmin: float
|
|
valmax: float
|
|
valstep: float | ArrayLike | None
|
|
drag_active: bool
|
|
valfmt: str
|
|
def __init__(
|
|
self,
|
|
ax: Axes,
|
|
orientation: Literal["horizontal", "vertical"],
|
|
closedmin: bool,
|
|
closedmax: bool,
|
|
valmin: float,
|
|
valmax: float,
|
|
valfmt: str,
|
|
dragging: Slider | None,
|
|
valstep: float | ArrayLike | None,
|
|
) -> None: ...
|
|
def disconnect(self, cid: int) -> None: ...
|
|
def reset(self) -> None: ...
|
|
|
|
class Slider(SliderBase):
|
|
slidermin: Slider | None
|
|
slidermax: Slider | None
|
|
val: float
|
|
valinit: float
|
|
track: Rectangle
|
|
poly: Polygon
|
|
hline: Line2D
|
|
vline: Line2D
|
|
label: Text
|
|
valtext: Text
|
|
def __init__(
|
|
self,
|
|
ax: Axes,
|
|
label: str,
|
|
valmin: float,
|
|
valmax: float,
|
|
*,
|
|
valinit: float = ...,
|
|
valfmt: str | None = ...,
|
|
closedmin: bool = ...,
|
|
closedmax: bool = ...,
|
|
slidermin: Slider | None = ...,
|
|
slidermax: Slider | None = ...,
|
|
dragging: bool = ...,
|
|
valstep: float | ArrayLike | None = ...,
|
|
orientation: Literal["horizontal", "vertical"] = ...,
|
|
initcolor: ColorType = ...,
|
|
track_color: ColorType = ...,
|
|
handle_style: dict[str, Any] | None = ...,
|
|
**kwargs
|
|
) -> None: ...
|
|
def set_val(self, val: float) -> None: ...
|
|
def on_changed(self, func: Callable[[float], Any]) -> int: ...
|
|
|
|
class RangeSlider(SliderBase):
|
|
val: tuple[float, float]
|
|
valinit: tuple[float, float]
|
|
track: Rectangle
|
|
poly: Polygon
|
|
label: Text
|
|
valtext: Text
|
|
def __init__(
|
|
self,
|
|
ax: Axes,
|
|
label: str,
|
|
valmin: float,
|
|
valmax: float,
|
|
*,
|
|
valinit: tuple[float, float] | None = ...,
|
|
valfmt: str | None = ...,
|
|
closedmin: bool = ...,
|
|
closedmax: bool = ...,
|
|
dragging: bool = ...,
|
|
valstep: float | ArrayLike | None = ...,
|
|
orientation: Literal["horizontal", "vertical"] = ...,
|
|
track_color: ColorType = ...,
|
|
handle_style: dict[str, Any] | None = ...,
|
|
**kwargs
|
|
) -> None: ...
|
|
def set_min(self, min: float) -> None: ...
|
|
def set_max(self, max: float) -> None: ...
|
|
def set_val(self, val: ArrayLike) -> None: ...
|
|
def on_changed(self, func: Callable[[tuple[float, float]], Any]) -> int: ...
|
|
|
|
class CheckButtons(AxesWidget):
|
|
labels: list[Text]
|
|
def __init__(
|
|
self,
|
|
ax: Axes,
|
|
labels: Sequence[str],
|
|
actives: Iterable[bool] | None = ...,
|
|
*,
|
|
useblit: bool = ...,
|
|
label_props: dict[str, Any] | None = ...,
|
|
frame_props: dict[str, Any] | None = ...,
|
|
check_props: dict[str, Any] | None = ...,
|
|
) -> None: ...
|
|
def set_label_props(self, props: dict[str, Any]) -> None: ...
|
|
def set_frame_props(self, props: dict[str, Any]) -> None: ...
|
|
def set_check_props(self, props: dict[str, Any]) -> None: ...
|
|
def set_active(self, index: int) -> None: ...
|
|
def get_status(self) -> list[bool]: ...
|
|
def on_clicked(self, func: Callable[[str], Any]) -> int: ...
|
|
def disconnect(self, cid: int) -> None: ...
|
|
@property
|
|
def lines(self) -> list[tuple[Line2D, Line2D]]: ...
|
|
@property
|
|
def rectangles(self) -> list[Rectangle]: ...
|
|
|
|
class TextBox(AxesWidget):
|
|
label: Text
|
|
text_disp: Text
|
|
cursor_index: int
|
|
cursor: LineCollection
|
|
color: ColorType
|
|
hovercolor: ColorType
|
|
capturekeystrokes: bool
|
|
def __init__(
|
|
self,
|
|
ax: Axes,
|
|
label: str,
|
|
initial: str = ...,
|
|
*,
|
|
color: ColorType = ...,
|
|
hovercolor: ColorType = ...,
|
|
label_pad: float = ...,
|
|
textalignment: Literal["left", "center", "right"] = ...,
|
|
) -> None: ...
|
|
@property
|
|
def text(self) -> str: ...
|
|
def set_val(self, val: str) -> None: ...
|
|
def begin_typing(self, x = ...) -> None: ...
|
|
def stop_typing(self) -> None: ...
|
|
def on_text_change(self, func: Callable[[str], Any]) -> int: ...
|
|
def on_submit(self, func: Callable[[str], Any]) -> int: ...
|
|
def disconnect(self, cid: int) -> None: ...
|
|
|
|
class RadioButtons(AxesWidget):
|
|
activecolor: ColorType
|
|
value_selected: str
|
|
labels: list[Text]
|
|
def __init__(
|
|
self,
|
|
ax: Axes,
|
|
labels: Iterable[str],
|
|
active: int = ...,
|
|
activecolor: ColorType | None = ...,
|
|
*,
|
|
useblit: bool = ...,
|
|
label_props: dict[str, Any] | Sequence[dict[str, Any]] | None = ...,
|
|
radio_props: dict[str, Any] | None = ...,
|
|
) -> None: ...
|
|
def set_label_props(self, props: dict[str, Any]) -> None: ...
|
|
def set_radio_props(self, props: dict[str, Any]) -> None: ...
|
|
def set_active(self, index: int) -> None: ...
|
|
def on_clicked(self, func: Callable[[str], Any]) -> int: ...
|
|
def disconnect(self, cid: int) -> None: ...
|
|
@property
|
|
def circles(self) -> list[Circle]: ...
|
|
|
|
class SubplotTool(Widget):
|
|
figure: Figure
|
|
targetfig: Figure
|
|
buttonreset: Button
|
|
def __init__(self, targetfig: Figure, toolfig: Figure) -> None: ...
|
|
|
|
class Cursor(AxesWidget):
|
|
visible: bool
|
|
horizOn: bool
|
|
vertOn: bool
|
|
useblit: bool
|
|
lineh: Line2D
|
|
linev: Line2D
|
|
background: Any
|
|
needclear: bool
|
|
def __init__(
|
|
self,
|
|
ax: Axes,
|
|
*,
|
|
horizOn: bool = ...,
|
|
vertOn: bool = ...,
|
|
useblit: bool = ...,
|
|
**lineprops
|
|
) -> None: ...
|
|
def clear(self, event: Event) -> None: ...
|
|
def onmove(self, event: Event) -> None: ...
|
|
|
|
class MultiCursor(Widget):
|
|
axes: Sequence[Axes]
|
|
horizOn: bool
|
|
vertOn: bool
|
|
visible: bool
|
|
useblit: bool
|
|
needclear: bool
|
|
vlines: list[Line2D]
|
|
hlines: list[Line2D]
|
|
def __init__(
|
|
self,
|
|
canvas: Any,
|
|
axes: Sequence[Axes],
|
|
*,
|
|
useblit: bool = ...,
|
|
horizOn: bool = ...,
|
|
vertOn: bool = ...,
|
|
**lineprops
|
|
) -> None: ...
|
|
def connect(self) -> None: ...
|
|
def disconnect(self) -> None: ...
|
|
def clear(self, event: Event) -> None: ...
|
|
def onmove(self, event: Event) -> None: ...
|
|
|
|
class _SelectorWidget(AxesWidget):
|
|
onselect: Callable[[float, float], Any]
|
|
useblit: bool
|
|
background: Any
|
|
validButtons: list[MouseButton]
|
|
def __init__(
|
|
self,
|
|
ax: Axes,
|
|
onselect: Callable[[float, float], Any],
|
|
useblit: bool = ...,
|
|
button: MouseButton | Collection[MouseButton] | None = ...,
|
|
state_modifier_keys: dict[str, str] | None = ...,
|
|
use_data_coordinates: bool = ...,
|
|
) -> None: ...
|
|
def update_background(self, event: Event) -> None: ...
|
|
def connect_default_events(self) -> None: ...
|
|
def ignore(self, event: Event) -> bool: ...
|
|
def update(self) -> None: ...
|
|
def press(self, event: Event) -> bool: ...
|
|
def release(self, event: Event) -> bool: ...
|
|
def onmove(self, event: Event) -> bool: ...
|
|
def on_scroll(self, event: Event) -> None: ...
|
|
def on_key_press(self, event: Event) -> None: ...
|
|
def on_key_release(self, event: Event) -> None: ...
|
|
def set_visible(self, visible: bool) -> None: ...
|
|
def get_visible(self) -> bool: ...
|
|
@property
|
|
def visible(self) -> bool: ...
|
|
def clear(self) -> None: ...
|
|
@property
|
|
def artists(self) -> tuple[Artist]: ...
|
|
def set_props(self, **props) -> None: ...
|
|
def set_handle_props(self, **handle_props) -> None: ...
|
|
def add_state(self, state: str) -> None: ...
|
|
def remove_state(self, state: str) -> None: ...
|
|
|
|
class SpanSelector(_SelectorWidget):
|
|
snap_values: ArrayLike | None
|
|
onmove_callback: Callable[[float, float], Any]
|
|
minspan: float
|
|
grab_range: float
|
|
drag_from_anywhere: bool
|
|
ignore_event_outside: bool
|
|
canvas: FigureCanvasBase | None
|
|
def __init__(
|
|
self,
|
|
ax: Axes,
|
|
onselect: Callable[[float, float], Any],
|
|
direction: Literal["horizontal", "vertical"],
|
|
*,
|
|
minspan: float = ...,
|
|
useblit: bool = ...,
|
|
props: dict[str, Any] | None = ...,
|
|
onmove_callback: Callable[[float, float], Any] | None = ...,
|
|
interactive: bool = ...,
|
|
button: MouseButton | Collection[MouseButton] | None = ...,
|
|
handle_props: dict[str, Any] | None = ...,
|
|
grab_range: float = ...,
|
|
state_modifier_keys: dict[str, str] | None = ...,
|
|
drag_from_anywhere: bool = ...,
|
|
ignore_event_outside: bool = ...,
|
|
snap_values: ArrayLike | None = ...,
|
|
) -> None: ...
|
|
def new_axes(self, ax: Axes, *, _props: dict[str, Any] | None = ...) -> None: ...
|
|
def connect_default_events(self) -> None: ...
|
|
@property
|
|
def direction(self) -> Literal["horizontal", "vertical"]: ...
|
|
@direction.setter
|
|
def direction(self, direction: Literal["horizontal", "vertical"]) -> None: ...
|
|
@property
|
|
def extents(self) -> tuple[float, float]: ...
|
|
@extents.setter
|
|
def extents(self, extents: tuple[float, float]) -> None: ...
|
|
|
|
class ToolLineHandles:
|
|
ax: Axes
|
|
def __init__(
|
|
self,
|
|
ax: Axes,
|
|
positions: ArrayLike,
|
|
direction: Literal["horizontal", "vertical"],
|
|
*,
|
|
line_props: dict[str, Any] | None = ...,
|
|
useblit: bool = ...,
|
|
) -> None: ...
|
|
@property
|
|
def artists(self) -> tuple[Line2D]: ...
|
|
@property
|
|
def positions(self) -> list[float]: ...
|
|
@property
|
|
def direction(self) -> Literal["horizontal", "vertical"]: ...
|
|
def set_data(self, positions: ArrayLike) -> None: ...
|
|
def set_visible(self, value: bool) -> None: ...
|
|
def set_animated(self, value: bool) -> None: ...
|
|
def remove(self) -> None: ...
|
|
def closest(self, x: float, y: float) -> tuple[int, float]: ...
|
|
|
|
class ToolHandles:
|
|
ax: Axes
|
|
def __init__(
|
|
self,
|
|
ax: Axes,
|
|
x: ArrayLike,
|
|
y: ArrayLike,
|
|
*,
|
|
marker: str = ...,
|
|
marker_props: dict[str, Any] | None = ...,
|
|
useblit: bool = ...,
|
|
) -> None: ...
|
|
@property
|
|
def x(self) -> ArrayLike: ...
|
|
@property
|
|
def y(self) -> ArrayLike: ...
|
|
@property
|
|
def artists(self) -> tuple[Line2D]: ...
|
|
def set_data(self, pts: ArrayLike, y: ArrayLike | None = ...) -> None: ...
|
|
def set_visible(self, val: bool) -> None: ...
|
|
def set_animated(self, val: bool) -> None: ...
|
|
def closest(self, x: float, y: float) -> tuple[int, float]: ...
|
|
|
|
class RectangleSelector(_SelectorWidget):
|
|
drag_from_anywhere: bool
|
|
ignore_event_outside: bool
|
|
minspanx: float
|
|
minspany: float
|
|
spancoords: Literal["data", "pixels"]
|
|
grab_range: float
|
|
def __init__(
|
|
self,
|
|
ax: Axes,
|
|
onselect: Callable[[MouseEvent, MouseEvent], Any],
|
|
*,
|
|
minspanx: float = ...,
|
|
minspany: float = ...,
|
|
useblit: bool = ...,
|
|
props: dict[str, Any] | None = ...,
|
|
spancoords: Literal["data", "pixels"] = ...,
|
|
button: MouseButton | Collection[MouseButton] | None = ...,
|
|
grab_range: float = ...,
|
|
handle_props: dict[str, Any] | None = ...,
|
|
interactive: bool = ...,
|
|
state_modifier_keys: dict[str, str] | None = ...,
|
|
drag_from_anywhere: bool = ...,
|
|
ignore_event_outside: bool = ...,
|
|
use_data_coordinates: bool = ...,
|
|
) -> None: ...
|
|
@property
|
|
def corners(self) -> tuple[np.ndarray, np.ndarray]: ...
|
|
@property
|
|
def edge_centers(self) -> tuple[np.ndarray, np.ndarray]: ...
|
|
@property
|
|
def center(self) -> tuple[float, float]: ...
|
|
@property
|
|
def extents(self) -> tuple[float, float, float, float]: ...
|
|
@extents.setter
|
|
def extents(self, extents: tuple[float, float, float, float]) -> None: ...
|
|
@property
|
|
def rotation(self) -> float: ...
|
|
@rotation.setter
|
|
def rotation(self, value: float) -> None: ...
|
|
@property
|
|
def geometry(self) -> np.ndarray: ...
|
|
|
|
class EllipseSelector(RectangleSelector): ...
|
|
|
|
class LassoSelector(_SelectorWidget):
|
|
verts: None | list[tuple[float, float]]
|
|
def __init__(
|
|
self,
|
|
ax: Axes,
|
|
onselect: Callable[[list[tuple[float, float]]], Any],
|
|
*,
|
|
useblit: bool = ...,
|
|
props: dict[str, Any] | None = ...,
|
|
button: MouseButton | Collection[MouseButton] | None = ...,
|
|
) -> None: ...
|
|
|
|
class PolygonSelector(_SelectorWidget):
|
|
grab_range: float
|
|
def __init__(
|
|
self,
|
|
ax: Axes,
|
|
onselect: Callable[[ArrayLike, ArrayLike], Any],
|
|
*,
|
|
useblit: bool = ...,
|
|
props: dict[str, Any] | None = ...,
|
|
handle_props: dict[str, Any] | None = ...,
|
|
grab_range: float = ...,
|
|
draw_bounding_box: bool = ...,
|
|
box_handle_props: dict[str, Any] | None = ...,
|
|
box_props: dict[str, Any] | None = ...
|
|
) -> None: ...
|
|
def onmove(self, event: Event) -> bool: ...
|
|
@property
|
|
def verts(self) -> list[tuple[float, float]]: ...
|
|
@verts.setter
|
|
def verts(self, xys: Sequence[tuple[float, float]]) -> None: ...
|
|
|
|
class Lasso(AxesWidget):
|
|
useblit: bool
|
|
background: Any
|
|
verts: list[tuple[float, float]] | None
|
|
line: Line2D
|
|
callback: Callable[[list[tuple[float, float]]], Any]
|
|
def __init__(
|
|
self,
|
|
ax: Axes,
|
|
xy: tuple[float, float],
|
|
callback: Callable[[list[tuple[float, float]]], Any],
|
|
*,
|
|
useblit: bool = ...,
|
|
) -> None: ...
|
|
def onrelease(self, event: Event) -> None: ...
|
|
def onmove(self, event: Event) -> None: ...
|