magicclass.widgets package¶
Subpackages¶
Submodules¶
magicclass.widgets.console module¶
Jupyter QtConsole widget with callback signals.
You can embed a console widget in a magic class.
from magicclass import magicclass
from magicclass.widgets import QtConsole
class Main:
console = QtConsole()
ui = Main()
ui.show()
There are some additional methods that would be very useful for developing a Python script executable GUI.
# programmatically add code to console.
ui.console.value = "a = 1"
# callback when code is executed.
@console.executed.connect
def _():
print("executed!")
# programmatically execute code.
ui.console.execute()
magicclass.widgets.listwidget module¶
ListWidget is a QListWidget wrapper class. This widget can contain any Python objects as list items.
from magicclass.widgets import ListWidget
listwidget = ListWidget()
# You can add any objects
listwidget.add_item("abc")
listwidget.add_item(np.arange(5))
You can dispatch double click callbacks depending on the type of contents.
@listwidget.register_callback(str)
def _(item, i):
# This function will be called when the item "abc" is double-clicked.
print(item)
@listwidget.register_callback(np.ndarray)
def _(item, i):
# This function will be called when the item np.arange(5) is double-clicked.
print(item.tolist())
In a similar way, you can dispatch display method and context menu.
@listwidget.register_delegate(np.ndarray)
def _(item):
# This function should return how ndarray will be displayed.
return f"Array with shape {item.shape}"
@listwidget.register_contextmenu(np.ndarray)
def Plot(item, i):
'''Function documentation will be the tooltip.'''
plt.plot(item)
plt.show()
- class magicclass.widgets.listwidget.ListWidget(dragdrop: bool = True, **kwargs)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
,magicgui.widgets._bases.mixins._OrientationMixin
,MutableSequence
[magicgui.widgets._bases.widget.Widget
]- property nitems: int¶
- register_callback(type_: type)[source]¶
Register a double-click callback function for items of certain type.
Register a custom context menu for items of certain type.
- property title: str¶
- property value: list[typing.Any]¶
- class magicclass.widgets.listwidget.PyListWidget(parent: None)[source]¶
Bases:
PyQt5.QtWidgets.QListWidget
- itemAt(self, QPoint) QListWidgetItem [source]¶
- PyListWidget.itemAt(self, int, int) -> QListWidgetItem
- setParentContainer(container: magicclass.widgets.listwidget.ListWidget) None [source]¶
magicclass.widgets.misc module¶
- class magicclass.widgets.misc.CheckButton(text: str | None = None, **kwargs)[source]¶
Bases:
magicgui.widgets.PushButton
- class magicclass.widgets.misc.ConsoleTextEdit(*args, **kwargs)[source]¶
Bases:
magicgui.widgets.TextEdit
- class magicclass.widgets.misc.Figure(nrows: int = 1, ncols: int = 1, figsize: tuple[int, int] = (4, 3), style=None, layout: str = 'vertical', **kwargs)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
,magicgui.widgets._bases.mixins._OrientationMixin
,MutableSequence
[magicgui.widgets._bases.widget.Widget
]A matplotlib figure canvas.
- property ax¶
- property axes¶
magicclass.widgets.separator module¶
- class magicclass.widgets.separator.Separator(orientation='horizontal', text: str = '', name: str = '', button: bool = False)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
,magicgui.widgets._bases.mixins._OrientationMixin
,MutableSequence
[magicgui.widgets._bases.widget.Widget
]- btn_clicked¶
- property btn_text¶
magicclass.widgets.sequence module¶
- class magicclass.widgets.sequence.ListDataView(widget: magicclass.widgets.sequence.ListEdit)[source]¶
Bases:
object
- class magicclass.widgets.sequence.ListEdit(value: Iterable[magicclass.widgets.sequence._V] = UNSET, annotation: Optional[type] = None, layout: str = 'horizontal', options: Optional[dict] = None, **kwargs)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
,magicgui.widgets._bases.mixins._OrientationMixin
,MutableSequence
[magicgui.widgets._bases.widget.Widget
]- property value¶
- class magicclass.widgets.sequence.TupleEdit(value: Iterable[magicclass.widgets.sequence._V] = UNSET, annotation: Optional[type] = None, layout: str = 'horizontal', options: Optional[dict] = None, **kwargs)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
,magicgui.widgets._bases.mixins._OrientationMixin
,MutableSequence
[magicgui.widgets._bases.widget.Widget
]- property value¶
magicclass.widgets.utils module¶
- class magicclass.widgets.utils.FrozenContainer(name: str = '', annotation: Any = None, label: str = None, tooltip: str | None = None, visible: bool | None = None, enabled: bool = True, gui_only=False, backend_kwargs={}, layout: str = 'vertical', widgets: Sequence[Widget] = (), labels=True)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
,magicgui.widgets._bases.mixins._OrientationMixin
,MutableSequence
[magicgui.widgets._bases.widget.Widget
]Non-editable container. This class is useful to add QWidget into Container. If a QWidget is added via Container.layout(), it will be invisible from Container. We can solve this problem by "wrapping" a QWidget with a Container.
Module contents¶
Advanced widgets for magic class GUI.
These widgets are all compatible with the append
method of Container widgets.
- class magicclass.widgets.CheckButton(text: str | None = None, **kwargs)[source]¶
Bases:
magicgui.widgets.PushButton
- class magicclass.widgets.Figure(nrows: int = 1, ncols: int = 1, figsize: tuple[int, int] = (4, 3), style=None, layout: str = 'vertical', **kwargs)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
,magicgui.widgets._bases.mixins._OrientationMixin
,MutableSequence
[magicgui.widgets._bases.widget.Widget
]A matplotlib figure canvas.
- property ax¶
- property axes¶
- class magicclass.widgets.FrozenContainer(name: str = '', annotation: Any = None, label: str = None, tooltip: str | None = None, visible: bool | None = None, enabled: bool = True, gui_only=False, backend_kwargs={}, layout: str = 'vertical', widgets: Sequence[Widget] = (), labels=True)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
,magicgui.widgets._bases.mixins._OrientationMixin
,MutableSequence
[magicgui.widgets._bases.widget.Widget
]Non-editable container. This class is useful to add QWidget into Container. If a QWidget is added via Container.layout(), it will be invisible from Container. We can solve this problem by "wrapping" a QWidget with a Container.
- class magicclass.widgets.ListEdit(value: Iterable[magicclass.widgets.sequence._V] = UNSET, annotation: Optional[type] = None, layout: str = 'horizontal', options: Optional[dict] = None, **kwargs)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
,magicgui.widgets._bases.mixins._OrientationMixin
,MutableSequence
[magicgui.widgets._bases.widget.Widget
]- property value¶
- class magicclass.widgets.ListWidget(dragdrop: bool = True, **kwargs)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
,magicgui.widgets._bases.mixins._OrientationMixin
,MutableSequence
[magicgui.widgets._bases.widget.Widget
]- property nitems: int¶
- register_callback(type_: type)[source]¶
Register a double-click callback function for items of certain type.
Register a custom context menu for items of certain type.
- property title: str¶
- property value: list[typing.Any]¶
- class magicclass.widgets.QtConsole(**kwargs)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
,magicgui.widgets._bases.mixins._OrientationMixin
,MutableSequence
[magicgui.widgets._bases.widget.Widget
]- executed¶
- name: str¶
- property value: str¶
Get current code block
- class magicclass.widgets.QtImageCanvas(image: Optional[numpy.ndarray] = None, cmap=None, contrast_limits: Optional[tuple[float, float]] = None, **kwargs)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
,magicgui.widgets._bases.mixins._OrientationMixin
,MutableSequence
[magicgui.widgets._bases.widget.Widget
]- property cmap¶
Color map
- property contrast_limits: tuple[float, float]¶
Contrast limits of image
- property image: numpy.ndarray¶
Image data
- property interactive: bool¶
Mouse interactivity
- show_button(visible: bool = True)[source]¶
Set visibility of ROI/Norm buttons.
- Parameters
visible (bool) -- Visibility of ROI/Norm buttons
- show_hist(visible: bool = True)[source]¶
Set visibility of intensity histogram.
- Parameters
visible (bool) -- Visibility of histogram
- property text_overlay: magicclass.widgets.qtgraph.graph_items.TextOverlay¶
Text overlay on the image.
- property view_range: list[list[float, float]]¶
Range of image (edge coordinates of canvas)
- class magicclass.widgets.QtPlotCanvas(region_visible=False, **kwargs)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
,magicgui.widgets._bases.mixins._OrientationMixin
,MutableSequence
[magicgui.widgets._bases.widget.Widget
]A 1-D data viewer that have similar API as napari Viewer.
- property interactive: bool¶
Mouse interactivity
- property region: tuple[float, float]¶
Get the limits of linear region.
- region_changed¶
- property region_visible: bool¶
Linear region visibility.
- property xlabel¶
Label of X-axis.
- property xlim¶
Range limits of X-axis.
- property ylabel: str¶
Label of Y-axis.
- property ylim¶
Range limits of Y-axis.
- class magicclass.widgets.Separator(orientation='horizontal', text: str = '', name: str = '', button: bool = False)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
,magicgui.widgets._bases.mixins._OrientationMixin
,MutableSequence
[magicgui.widgets._bases.widget.Widget
]- btn_clicked¶
- property btn_text¶
- name: str¶
- class magicclass.widgets.TupleEdit(value: Iterable[magicclass.widgets.sequence._V] = UNSET, annotation: Optional[type] = None, layout: str = 'horizontal', options: Optional[dict] = None, **kwargs)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
,magicgui.widgets._bases.mixins._OrientationMixin
,MutableSequence
[magicgui.widgets._bases.widget.Widget
]- property value¶