p5control.gui.widgets
This module contains custom qt widgets, which help you quickly create your own gui. Screenshots are included to give you an idea of how the widgets look and what they do. These are taken on linux and therefore might look different on your operating system.
p5control.gui.widgets.datagw_plot module
This module provides a plot widget, which consists out of a pyqtgraph PlotWidget with an added
external legend. Each line is represented by a config dictionary, which is automatically generated
from the attributes of the dataset and can be edited with PlotForm
Plot config
- id (
str) Unique id for this config.
- id (
- lock (
threading.Lock) Acquire this lock when making changes to the config or objects references within.
- lock (
- plotDataItem (
pyqtgraph.PlotDataItem) the actual item which is plotted in the PlotWidget.
- plotDataItem (
- path (
str) hdf5 path of the dataset to plot
- path (
to be continued…
- class p5control.gui.widgets.datagw_plot.DataGatewayPlot(dgw, showLegend=True, showButtons=True)
Bases:
QSplitter- selectedConfig
emitted if a plot is selected, provides the config dictionary
- add_plot(path: str, *args, **kwargs)
Add new plot from the dataset at
path.- Parameters
path (str) – hdf5 path to plot
*args – see
PlotConfigfor options which can be used.**kwargs – see
PlotConfigfor options which can be used.
- remove_plot(plotid: str)
Remove plot by its id.
- Parameters
plotid (str) – unique id of the plot config.
- update(self) None
- update(self, arg__1: PySide6.QtCore.QRect) None
- update(self, arg__1: Union[PySide6.QtGui.QRegion, PySide6.QtGui.QBitmap, PySide6.QtGui.QPolygon, PySide6.QtCore.QRect]) None
- update(self, x: int, y: int, w: int, h: int) None
- cleanup()
- connectPlotForm(plotForm: PlotForm)
Convenience function to setup signal connections between legend, plotForm and self
- dragEnterEvent(e: QDragEnterEvent) None
Accept event if the path in mimeData text refers to a dataset.
- dropEvent(e: QDropEvent) None
Try to add plot from path
- staticMetaObject = PySide6.QtCore.QMetaObject("DataGatewayPlot" inherits "QSplitter": Methods: #35 type=Signal, signature=selectedConfig(PyObject), parameters=PyObject #36 type=Slot, signature=_on_legend_checkbox_changed(int), parameters=int #37 type=Slot, signature=_on_legend_selected(QString), parameters=QString #38 type=Slot, signature=remove_plot(QString), parameters=QString )
p5control.gui.widgets.datagw_treeview module
This file defines the class DataGatewayTreeView, which is a Widget which shows the directory structure of the hdf5 file behind the gateway in a customized QTreeView.
- class p5control.gui.widgets.datagw_treeview.DataGatewayTreeModel(dgw: DataGateway)
Bases:
QStandardItemModel- init_model()
Initialize the item model two layers deep.
- add_node(parent_item: QStandardItem, node: Union[Group, Dataset])
Add node to the tree, by creating a corresponding QStandardItem for the node and appending it in a new row to parent_item.
- Parameters
parent_item (QStandardItem) – the parent item the node should be added to
node (h5py.Group, h5py.Dataset) – the node in the hdf5 path which is added to the model
- visit_update_children(item)
Update children for the item and recursively for all children. Newly added children are not visited, but their children are also added.
- Parameters
item (QStandardItem) –
- update_children(item)
Adds all the children from the dataserver which item does not already have
- Parameters
item (QStandardItem) –
- Returns
the new items
- Return type
List[items]
- handle_expanded(index)
Update folder icon to expanded and update children.
- Parameters
index – the index of the item which is being expanded
- handle_collapsed(index)
Update folder icon to closed.
- Parameters
index – index of the item which has been closed.
- update_data()
Update all expanded nodes with children which might have been added to the dataserver.
- supportedDragActions() DropAction
Only allow dragging to copy the element, so it will not be removed.
- mimeData(indexes: Iterable[QModelIndex]) QMimeData
Send hdf5 path of the item as QMimeData text. Allows for the dragging of an element.
- staticMetaObject = PySide6.QtCore.QMetaObject("DataGatewayTreeModel" inherits "QStandardItemModel": )
- class p5control.gui.widgets.datagw_treeview.DataGatewayTreeView(dgw, *args, dragEnabled=True, customContextMenu=False, **kwargs)
Bases:
QTreeView- doubleClickedDataset
Signal(str) - emitted if a dataset is double clicked, provides path to dataset
- selected
Signal(str) - emitted if the selection changes, provides path to the newly selected item
- staticMetaObject = PySide6.QtCore.QMetaObject("DataGatewayTreeView" inherits "QTreeView": Methods: #104 type=Signal, signature=doubleClickedDataset(QString), parameters=QString #105 type=Signal, signature=selected(QString), parameters=QString #106 type=Slot, signature=_onCustomContextMenu(QPoint), parameters=QPoint #107 type=Slot, signature=_double_click(QModelIndex), parameters=QModelIndex #108 type=Slot, signature=_selection_changed(QItemSelection,QItemSelection), parameters=QItemSelection, QItemSelection )
- update_data()
Update the model by pulling newly added groups and datasets from the data server.
p5control.gui.widgets.legend module
This module defines the model and view for a legend based on QListView.
- p5control.gui.widgets.legend.QPixmapFromItem(item: QGraphicsItem) QPixmap
Paint QGraphicsItem to QPixmap, can e.g. be used to create an QIcon from the Item, as in the legend.
- Parameters
item (QGraphicsItem) – item which implements
paintmethod
- class p5control.gui.widgets.legend.LegendModel
Bases:
QStandardItemModel- addItem(config)
Add item to legend, specified with config.
- Parameters
config (dict) – plot config dictionary
- removeItem(id: str)
Remove config by its id.
- Parameters
id (str) – config id
- updateItem(id: str)
Update the item by its id. This regenerates the icon and resets the name, updating the shown widget if the config has been modified, e.g. changing plot color.
- Parameters
id (str) – config id
- mimeData(indexes: Iterable[QModelIndex]) QMimeData
Send hdf5 path of the item as QMimeData text.
- staticMetaObject = PySide6.QtCore.QMetaObject("LegendModel" inherits "QStandardItemModel": Methods: #79 type=Slot, signature=removeItem(QString), parameters=QString )
- class p5control.gui.widgets.legend.LegendView(dragEnabled=True, customContextMenu=True)
Bases:
QListView- deleteRequested
Signal(str) - emitted if an element should be remove from the plot, provides id
- selected
Signal(str) - emitted if the selection changes, provides the id or “” if there are no longer any elements
- staticMetaObject = PySide6.QtCore.QMetaObject("LegendView" inherits "QListView": Methods: #83 type=Signal, signature=deleteRequested(QString), parameters=QString #84 type=Signal, signature=selected(QString), parameters=QString #85 type=Slot, signature=_onCustomContextMenu(QPoint), parameters=QPoint #86 type=Slot, signature=_selectionChanged(QItemSelection,QItemSelection), parameters=QItemSelection, QItemSelection )
p5control.gui.widgets.monitorvaluebox module
- class p5control.gui.widgets.monitorvaluebox.MonitorValueBox(dgw: DataGateway, path: str, selector: str, *args, **kwargs)
Bases:
QDoubleSpinBox- __init__(dgw: DataGateway, path: str, selector: str, *args, **kwargs)
- Parameters
dgw (DataGateway) – gateway to the dataserver
path (str) – dataset path in the hdf5 file
selector (str) – which column to use
- cleanup()
Remove callback.
- staticMetaObject = PySide6.QtCore.QMetaObject("MonitorValueBox" inherits "QDoubleSpinBox": )
p5control.gui.widgets.editvaluebox module
- class p5control.gui.widgets.editvaluebox.EditValueBox(dgw: DataGateway, path: str, selector: str, setter, *args, **kwargs)
Bases:
MonitorValueBox- onEditingFinished()
Call self.setter with new value if it has changed.
- staticMetaObject = PySide6.QtCore.QMetaObject("EditValueBox" inherits "MonitorValueBox": Methods: #44 type=Slot, signature=onEditingFinished() )
p5control.gui.widgets.valueboxform module
- class p5control.gui.widgets.valueboxform.ValueBoxForm(dgw: DataGateway, rows=None, *args, **kwargs)
Bases:
QWidget- addRow(row)
Add a row to the layout, row is given by
row = (label: str, path: str, selector: Union[str, slice], Optional[setter: func])
- staticMetaObject = PySide6.QtCore.QMetaObject("ValueBoxForm" inherits "QWidget": )
p5control.gui.widgets.measurementcontrol module
- class p5control.gui.widgets.measurementcontrol.StatusIndicator
Bases:
QToolButton- set_state(state: bool)
Set the state.
- Parameters
state (bool) – True -> green, False -> red
- staticMetaObject = PySide6.QtCore.QMetaObject("StatusIndicator" inherits "QToolButton": )
- class p5control.gui.widgets.measurementcontrol.PlayPauseButton(parent: Optional[QWidget] = None)
Bases:
QToolButton- changed
Signal(bool) - emits
self.playingif it changes
- set_playing(playing: bool)
Change playing parameter and upate icon
- Parameters
playing (bool) – state to set the button in
- staticMetaObject = PySide6.QtCore.QMetaObject("PlayPauseButton" inherits "QToolButton": Methods: #53 type=Signal, signature=changed(bool), parameters=bool )
- class p5control.gui.widgets.measurementcontrol.MeasurementControl(gw: InstrumentGateway, show_selector=True, parent: Optional[QWidget] = None)
Bases:
QWidget- gw_update()
Update the widget by requesting the Measurement object from the instrument server and reading its state into this widget.
- staticMetaObject = PySide6.QtCore.QMetaObject("MeasurementControl" inherits "QWidget": Methods: #34 type=Slot, signature=_handle_btn_change(bool), parameters=bool )