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:
magicclass.widgets.utils.FreeWidget
,collections.abc.MutableSequence
- 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
A checkable button.
- class magicclass.widgets.misc.ConsoleTextEdit(*args, **kwargs)[source]¶
Bases:
magicgui.widgets.TextEdit
A text edit with console-like setting.
- class magicclass.widgets.misc.Figure(nrows: int = 1, ncols: int = 1, figsize: tuple[int, int] = (4, 3), style=None, **kwargs)[source]¶
Bases:
magicclass.widgets.utils.FreeWidget
A matplotlib figure canvas.
- property ax¶
- property axes¶
- class magicclass.widgets.misc.MacroEdit(*args, **kwargs)[source]¶
Bases:
magicclass.widgets.utils.FreeWidget
A text edit embeded with a custom menu bar.
- property value¶
- class magicclass.widgets.misc.MessageBoxMode(value)[source]¶
Bases:
enum.Enum
An enumeration.
- ABOUT = 'about'¶
- ERROR = 'error'¶
- INFO = 'info'¶
- QUESTION = 'question'¶
- WARNING = 'warn'¶
- magicclass.widgets.misc.show_messagebox(mode: str | MessageBoxMode = MessageBoxMode.INFO, title: str = None, text: str = None, parent=None) bool [source]¶
magicclass.widgets.separator module¶
- class magicclass.widgets.separator.Separator(orientation: str = 'horizontal', text: str = '', name: str = '', button: bool = False)[source]¶
Bases:
magicclass.widgets.utils.FreeWidget
A Separator widget that can be used in both widgets and menus.
- 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.threading module¶
- class magicclass.widgets.threading.ProgressWidget(text: Optional[str] = None, visible: bool = False)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
,magicgui.widgets._bases.mixins._OrientationMixin
,MutableSequence
[magicgui.widgets._bases.widget.Widget
]- property text: str¶
- property value: int¶
- class magicclass.widgets.threading.progress(function: Optional[Callable] = None, *, infinite: bool = True, progress: Optional[magicclass.widgets.threading.ProgressWidget] = None)[source]¶
Bases:
object
- property function¶
magicclass.widgets.utils module¶
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
A checkable button.
- class magicclass.widgets.ConsoleTextEdit(*args, **kwargs)[source]¶
Bases:
magicgui.widgets.TextEdit
A text edit with console-like setting.
- class magicclass.widgets.Figure(nrows: int = 1, ncols: int = 1, figsize: tuple[int, int] = (4, 3), style=None, **kwargs)[source]¶
Bases:
magicclass.widgets.utils.FreeWidget
A matplotlib figure canvas.
- property ax¶
- property axes¶
- class magicclass.widgets.FreeWidget(**kwargs)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
A Widget class with any QWidget as a child.
- 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:
magicclass.widgets.utils.FreeWidget
,collections.abc.MutableSequence
- 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.MacroEdit(*args, **kwargs)[source]¶
Bases:
magicclass.widgets.utils.FreeWidget
A text edit embeded with a custom menu bar.
- property value¶
- class magicclass.widgets.ProgressWidget(text: Optional[str] = None, visible: bool = False)[source]¶
Bases:
magicgui.widgets._bases.widget.Widget
,magicgui.widgets._bases.mixins._OrientationMixin
,MutableSequence
[magicgui.widgets._bases.widget.Widget
]- property text: str¶
- property value: int¶
- class magicclass.widgets.QtConsole(**kwargs)[source]¶
Bases:
magicclass.widgets.utils.FreeWidget
- 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, show_hist: bool = True, show_button: bool = True, **kwargs)[source]¶
Bases:
magicclass.widgets.utils.FreeWidget
,magicclass.widgets.qtgraph.qt_graph.HasPlotItem
- property cmap¶
Color map
- property contrast_limits: tuple[float, float]¶
Contrast limits of image
- property image: np.ndarray | None¶
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:
magicclass.widgets.utils.FreeWidget
,magicclass.widgets.qtgraph.qt_graph.HasPlotItem
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: str = 'horizontal', text: str = '', name: str = '', button: bool = False)[source]¶
Bases:
magicclass.widgets.utils.FreeWidget
A Separator widget that can be used in both widgets and menus.
- 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¶
- class magicclass.widgets.progress(function: Optional[Callable] = None, *, infinite: bool = True, progress: Optional[magicclass.widgets.threading.ProgressWidget] = None)[source]¶
Bases:
object
- property function¶