Widget classes

class pymeasure.display.widgets.browser_widget.BrowserWidget(*args, parent=None)

Bases: QWidget

Widget wrapper for Browser class

class pymeasure.display.widgets.directory_widget.DirectoryLineEdit(parent=None)

Bases: QLineEdit

Widget that allows to choose a directory path. A completer is implemented for quick completion. A browse button is available.

class pymeasure.display.widgets.estimator_widget.EstimatorThread(get_estimates_callable)

Bases: StoppableQThread

run(self)
class pymeasure.display.widgets.estimator_widget.EstimatorWidget(parent=None)

Bases: QWidget

Widget that allows to display up-front estimates of the measurement procedure.

This widget relies on a get_estimates method of the Procedure class. get_estimates is expected to return a list of tuples, where each tuple contains two strings: a label and the estimate.

If the SequencerWidget is also used, it is possible to ask for the current sequencer or its length by asking for two keyword arguments in the Implementation of the get_estimates function: sequence and sequence_length, respectively.

check_get_estimates_signature()

Method that checks the signature of the get_estimates function. It checks which input arguments are allowed and, if the output is correct for the EstimatorWidget, stores the number of estimates.

display_estimates(estimates)

Method that updates the shown estimates for the given set of estimates.

Parameters

estimates – The set of estimates to be shown in the form of a list of tuples of (2) strings

get_estimates()

Method that makes a procedure with the currently entered parameters and returns the estimates for these parameters.

update_estimates()

Method that gets and displays the estimates. Implemented for connecting to the ‘update’-button.

class pymeasure.display.widgets.fileinput_widget.FileInputWidget(parent=None)

Bases: QWidget

Widget for controlling where the data of an experiment will be stored.

The widget consists of a field for the filename (FilenameLineEdit), a field for the directory (DirectoryLineEdit), and a checkbox to control whether the measurement is stored.

property directory

String controlling the directory where the file will be stored.

property extensions

List of extensions that are recognized by the widget.

The first value of this list will be used as default value in case no extension is provided in the filename input field.

property filename

String controlling the filename that is shown in the filename input field.

property filename_base

String containing the base of the filename with which the file will be stored. Can only be read.

property filename_extension

String containing the file extension with which the file will be stored.

Can only be read.

property filename_fixed

Boolean controlling whether the filename input field is frozen. If True, the filename field will be visible but disabled (i.e., grayed out).

property store_measurement

Boolean controlling whether the measurement will be stored.

class pymeasure.display.widgets.filename_widget.FilenameLineEdit(procedure_class, parent=None)

Bases: QLineEdit

Widget that allows to choose a filename. A completer is implemented for quick completion of placeholders

class pymeasure.display.widgets.filename_widget.FilenameValidator(placeholders, parent)

Bases: QValidator

fixup(self, a0: str) str
validate(self, a0: str, a1: int) Tuple[QValidator.State, str, int]
class pymeasure.display.widgets.filename_widget.PlaceholderCompleter(placeholders)

Bases: QCompleter

splitPath(self, path: str) List[str]
class pymeasure.display.widgets.image_frame.ImageFrame(x_axis, y_axis, z_axis=None, refresh_time=0.2, check_status=True, parent=None)

Bases: PlotFrame

Extends PlotFrame to plot also axis Z using colors

ResultsClass

alias of ResultsImage

class pymeasure.display.widgets.image_widget.ImageWidget(name, columns, x_axis, y_axis, z_axis=None, refresh_time=0.2, check_status=True, parent=None)

Bases: TabWidget, QWidget

Extends the ImageFrame to allow different columns of the data to be dynamically chosen

load(curve)

Add curve to widget

new_curve(results, color=<PyQt5.QtGui.QColor object>, **kwargs)

Creates a new image

remove(curve)

Remove curve from widget

sizeHint(self) QSize
class pymeasure.display.widgets.inputs_widget.InputsWidget(procedure_class, inputs=(), parent=None, hide_groups=True, inputs_in_scrollarea=False)

Bases: QWidget

Widget wrapper for various Inputs classes

get_procedure()

Returns the current procedure

class pymeasure.display.widgets.log_widget.HTMLFormatter(fmt=None, datefmt=None, style='%', validate=True, *, defaults=None)

Bases: Formatter

format(record)

Format the specified record as text.

The record’s attribute dictionary is used as the operand to a string formatting operation which yields the returned string. Before formatting the dictionary, a couple of preparatory steps are carried out. The message attribute of the record is computed using LogRecord.getMessage(). If the formatting string uses the time (as determined by a call to usesTime(), formatTime() is called to format the event time. If there is exception information, it is formatted using formatException() and appended to the message.

class pymeasure.display.widgets.log_widget.LogWidget(name, parent=None, fmt=None, datefmt=None)

Bases: TabWidget, QWidget

Widget to display logging information in GUI

It is recommended to include this widget in all subclasses of ManagedWindowBase

class pymeasure.display.widgets.plot_frame.PlotFrame(x_axis=None, y_axis=None, refresh_time=0.2, check_status=True, parent=None)

Bases: QFrame

Combines a PyQtGraph Plot with Crosshairs. Refreshes the plot based on the refresh_time, and allows the axes to be changed on the fly, which updates the plotted data

ResultsClass

alias of ResultsCurve

parse_axis(axis)

Returns the units of an axis by searching the string

class pymeasure.display.widgets.plot_widget.PlotWidget(name, columns, x_axis=None, y_axis=None, refresh_time=0.2, check_status=True, linewidth=1, parent=None)

Bases: TabWidget, QWidget

Extends PlotFrame to allow different columns of the data to be dynamically chosen

clear_widget()

Clear widget content

Behaviour is widget specific and it is currently used in preview mode

load(curve)

Add curve to widget

new_curve(results, color=<PyQt5.QtGui.QColor object>, **kwargs)

Create a new curve

preview_widget(parent=None)

Return a widget suitable for preview during loading

remove(curve)

Remove curve from widget

set_color(curve, color)

Change the color of the pen of the curve

sizeHint(self) QSize
class pymeasure.display.widgets.results_dialog.ResultsDialog(procedure_class, widget_list=(), parent=None)

Bases: QFileDialog

Widget that displays a dialog box for loading a past experiment run. It shows a preview of curves from the results file when selected in the dialog box.

This widget used by the open_experiment method in ManagedWindowBase class

class pymeasure.display.widgets.sequencer_widget.ComboBoxDelegate(owner, choices)

Bases: QStyledItemDelegate

createEditor(self, parent: QWidget, option: QStyleOptionViewItem, index: QModelIndex) QWidget
setEditorData(self, editor: QWidget, index: QModelIndex)
setModelData(self, editor: QWidget, model: QAbstractItemModel, index: QModelIndex)
updateEditorGeometry(self, editor: QWidget, option: QStyleOptionViewItem, index: QModelIndex)
class pymeasure.display.widgets.sequencer_widget.ExpressionValidator

Bases: QValidator

validate(self, a0: str, a1: int) Tuple[QValidator.State, str, int]
class pymeasure.display.widgets.sequencer_widget.LineEditDelegate

Bases: QStyledItemDelegate

createEditor(self, parent: QWidget, option: QStyleOptionViewItem, index: QModelIndex) QWidget
setEditorData(self, editor: QWidget, index: QModelIndex)
setModelData(self, editor: QWidget, model: QAbstractItemModel, index: QModelIndex)
updateEditorGeometry(self, editor: QWidget, option: QStyleOptionViewItem, index: QModelIndex)
class pymeasure.display.widgets.sequencer_widget.SequenceDialog(save=False, parent=None)

Bases: QFileDialog

Widget that displays a dialog box for loading or saving a sequence tree.

It also shows a preview of sequence tree in the dialog box

Parameters

save – True if we are saving a file. Default False.

class pymeasure.display.widgets.sequencer_widget.SequencerTreeModel(data, header=('Level', 'Parameter', 'Sequence'), parent=None)

Bases: QAbstractItemModel

Model for sequencer data

Parameters
  • header – List of string representing header data

  • data – data associated with the model

  • parent – A QWidget that QT will give ownership of this Widget to.

add_node(parameter, parent=None)

Add a row in the sequencer

columnCount(parent)

Return the number of columns in the model header.

The parent parameter exists only to support the signature of QAbstractItemModel.

data(index, role)

Return the data to display for the given index and the given role.

This method should not be called directly. This method is called implicitly by the QTreeView that is displaying us, as the way of finding out what to display where.

flags(index)

Set the flags for the item at the given QModelIndex.

Here, we just set all indexes to enabled, and selectable.

headerData(section, orientation, role)

Return the header data for the given section, orientation and role.

This method should not be called directly. This method is called implicitly by the QTreeView that is displaying us, as the way of finding out what to display where.

index(row, col, parent)

Return a QModelIndex instance pointing the row and column underneath the parent given. This method should not be called directly. This method is called implicitly by the QTreeView that is displaying us, as the way of finding out what to display where.

parent(index=None)

Return the index of the parent of a given index. If index is not supplied, return an invalid QModelIndex.

Parameters

index – QModelIndex optional.

Returns

remove_node(index)

Remove a row in the sequencer

rowCount(parent)

Return the number of children of a given parent.

If an invalid QModelIndex is supplied, return the number of children under the root.

Parameters

parent – QModelIndex

setData(self, index: QModelIndex, value: Any, role: int = Qt.ItemDataRole.EditRole) bool
visit_tree(parent)

Return a generator to enumerate all the nodes in the tree

class pymeasure.display.widgets.sequencer_widget.SequencerTreeView(parent=None)

Bases: QTreeView

setModel(self, model: QAbstractItemModel)
class pymeasure.display.widgets.sequencer_widget.SequencerWidget(inputs=None, sequence_file=None, parent=None)

Bases: QWidget

Widget that allows to generate a sequence of measurements

It allows sweeping parameters and moreover, one can write a simple text file to easily load a sequence. Sequences can also be saved

Currently requires a queue function of the ManagedWindow to have a “procedure” argument.

Parameters

inputs – List of strings representing the parameters name

load_sequence(*, filename=None)

Load a sequence from a .txt file.

Parameters

filename – Filename (string) of the to-be-loaded file.

queue_sequence()

Obtain a list of parameters from the sequence tree, enter these into procedures, and queue these procedures.

class pymeasure.display.widgets.tab_widget.TabWidget(name, *args, **kwargs)

Bases: object

Utility class to define default implementation for some basic methods.

When defining a widget to be used in subclasses of ManagedWindowBase, users should inherit from this class and provide an implementation of these methods

clear_widget()

Clear widget content

Behaviour is widget specific and it is currently used in preview mode

load(curve)

Add curve to widget

new_curve(*args, **kwargs)

Create a new curve

preview_widget(parent=None)

Return a Qt widget suitable for preview during loading

See also ResultsDialog If the object returned is not None, then it should have also an attribute name.

remove(curve)

Remove curve from widget

set_color(curve, color)

Set color for widget

class pymeasure.display.widgets.dock_widget.DockWidget(name, procedure_class, x_axis_labels=None, y_axis_labels=None, linewidth=1, layout_path='./', layout_filename='', parent=None)

Bases: TabWidget, QWidget

Widget that contains a DockArea with a number of Docks as determined by the length of the longest x_axis_labels or y_axis_labels list.

Parameters
  • name – Name for the TabWidget

  • procedure_class – procedure class describing the experiment (see Procedure)

  • x_axis_labels – List of data column(s) for the x-axis of the plot. If the list is shorter than y_axis_labels the last item in the list to match y_axis_labels length.

  • y_axis_labels – List of data column(s) for the y-axis of the plot. If the list is shorter than x_axis_labels the last item in the list to match x_axis_labels length.

  • linewidth – line width for plots in PlotWidget

  • layout_path – Directory path to save dock layout state. Default is ‘./’

  • layout_filename – Optional filename for dock layout file. Default: current procedure class + “_dock_layout.json”

  • parent – Passed on to QtWidgets.QWidget. Default is None

contextMenuEvent(self, a0: QContextMenuEvent)
new_curve(results, color=<PyQt5.QtGui.QColor object>, **kwargs)

Create a new curve

save_dock_layout()

Save the current layout of the docks and the plot settings. When running the GUI you can access this function by right-clicking in the widget area to bring up the context menu and selecting “Save Dock Layout”

class pymeasure.display.widgets.table_widget.PandasModelBase(column_index=None, results_list=[], parent=None)

Bases: QAbstractTableModel

This class provided a model to manage multiple panda dataframes and display them as a single table.

The multiple pandas dataframes are provided as ResultTable class instances and all of them share the same number of columns.

There are some assumptions: - Series in the dataframe are identical, we call this number k - Series length can be different, we call this number l(x), where x=1..n

The data can be presented as follow: - By column: each series in a separate column, in this case table shape will be: (k*n) x (max(l(x) x=1..n) - By row: column fixed to the number of series, in this case table shape will be: k x (sum of l(x) x=1..n)

columnCount(self, parent: QModelIndex = QModelIndex()) int
data(self, index: QModelIndex, role: int = Qt.ItemDataRole.DisplayRole) Any
headerData(section, orientation, role)

Return header information

Override method from QAbstractTableModel

pandas_column_count()

Return total column count of the panda dataframes

The value depends on the geometry selected to display dataframes

pandas_row_count()

Return total row count of the panda dataframes

The value depends on the geometry selected to display dataframes

rowCount(self, parent: QModelIndex = QModelIndex()) int
translate_to_global(results, row, col)

Translate from single results coordinates to full table coordinates

translate_to_local(row, col)

Translate from full table coordinate to single results coordinates

class pymeasure.display.widgets.table_widget.PandasModelByColumn(column_index=None, results_list=[], parent=None)

Bases: PandasModelBase

pandas_column_count()

Return total column count of the panda dataframes

The value depends on the geometry selected to display dataframes

pandas_row_count()

Return total row count of the panda dataframes

The value depends on the geometry selected to display dataframes

translate_to_global(results, row, col)

Translate from single results coordinates to full table coordinates

translate_to_local(row, col)

Translate from full table coordinate to single results coordinates

class pymeasure.display.widgets.table_widget.PandasModelByRow(column_index=None, results_list=[], parent=None)

Bases: PandasModelBase

pandas_column_count()

Return total column count of the panda dataframes

The value depends on the geometry selected to display dataframes

pandas_row_count()

Return total row count of the panda dataframes

The value depends on the geometry selected to display dataframes

translate_to_global(results, row, col)

Translate from single results coordinates to full table coordinates

translate_to_local(row, col)

Translate from full table coordinate to single results coordinates

class pymeasure.display.widgets.table_widget.ResultsTable(results, color, column_index=None, force_reload=False, wdg=None, **kwargs)

Bases: QObject

Class representing a panda dataframe

class pymeasure.display.widgets.table_widget.Table(refresh_time=0.2, check_status=True, force_reload=False, layout_class=<class 'pymeasure.display.widgets.table_widget.PandasModelByColumn'>, column_index=None, float_digits=6, parent=None)

Bases: QTableView

Table format view of Experiment objects

setModel(self, model: QAbstractItemModel)
set_model(model_class)

Replace model with new instance of model_class

class pymeasure.display.widgets.table_widget.TableWidget(name, columns, by_column=True, column_index=None, refresh_time=0.2, float_digits=6, check_status=True, parent=None)

Bases: TabWidget, QWidget

Widget to display experiment data in a tabular format

clear_widget()

Clear widget content

Behaviour is widget specific and it is currently used in preview mode

load(table)

Add curve to widget

new_curve(results, color=<PyQt5.QtGui.QColor object>, **kwargs)

Create a new curve

preview_widget(parent=None)

Return a widget suitable for preview during loading

remove(table)

Remove curve from widget

set_color(table, color)

Change the color of the pen of the curve