Class: QgsFieldExpressionWidget¶
- class qgis.gui.QgsFieldExpressionWidget¶
Bases:
PyQt5.QtWidgets.QWidget
The
QgsFieldExpressionWidget
class creates a widget to choose fields and edit expressions It contains a combo box to display the fields and expression and a button to open the expression dialog. The combo box is editable, allowing expressions to be edited inline. The validity of the expression is checked live on key press, invalid expressions are displayed in red. The expression will be added to the model (and the fieldChanged signals emitted) only when editing in the line edit is finished (focus lost, enter key pressed).QgsFieldExpressionWidget(parent: QWidget = None)
QgsFieldExpressionWidget
creates a widget with a combo box to display the fields and expression and a button to open the expression dialogMethods
Returns
True
if the combo box allows the empty field ("not set") choice.Allow accepting expressions with evaluation errors.
Appends a scope to the current expression context.
Returns the currently selected field or expression.
Returns the visibility of the button
- param event:
currentField returns the currently selected field or expression if allowed
Returns the current text that is set in the expression area
open the expression dialog to edit the current or add a new expression
- param watched:
Returns the currently selected field or expression.
Returns the title used for the expression dialog
when expression is edited by the user in the line edit, it will be checked for validity
when expression has been edited (finished) it will be added to the model
currently used filter on list of fields
If the content is not just a simple field this method will return
True
.- param expressionStr:
Returns
True
if the current expression is validReturns the layer currently associated with the widget.
Register an expression context generator class that will be used to retrieve an expression context for the widget.
Sets whether an optional empty field ("not set") option is shown in the combo box.
Allow accepting expressions with evaluation errors.
Set the visibility of the button
Sets the current expression text and if applicable also the field.
define the title used in the expression dialog
sets the current field or expression in the widget
Sets the fields used in the widget to
fields
, this allows the widget to work without a layer.setFilters allows filtering according to the type of field
Sets the geometry calculator used in the expression dialog
Sets the layer used to display the fields and expression.
- param isLeft:
sets the current row in the widget
updateLineEditStyle will re-style (color/font) the line edit depending on content and status
Signals
pyqtSignal(*types, name: str = ..., revision: int = ..., arguments: Sequence = ...) -> PYQT_SIGNAL
pyqtSignal(*types, name: str = ..., revision: int = ..., arguments: Sequence = ...) -> PYQT_SIGNAL
pyqtSignal(*types, name: str = ..., revision: int = ..., arguments: Sequence = ...) -> PYQT_SIGNAL
- actionEvent(self, QActionEvent)¶
- allowEmptyFieldName(self) bool ¶
Returns
True
if the combo box allows the empty field (“not set”) choice.See also
New in version 3.4.6.
- Return type:
bool
- allowEvalErrors(self) bool ¶
Allow accepting expressions with evaluation errors. This can be useful when we are not able to provide an expression context of which we are sure it’s completely populated.
- Return type:
bool
- allowEvalErrorsChanged¶
pyqtSignal(*types, name: str = …, revision: int = …, arguments: Sequence = …) -> PYQT_SIGNAL
types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.
- Parameters:
name (str = ...) –
revision (int = ...) –
arguments (Sequence = ...) –
- Return type:
PYQT_SIGNAL
- appendScope(self, scope: QgsExpressionContextScope)¶
Appends a scope to the current expression context.
- Parameters:
scope (QgsExpressionContextScope) – The scope to add.
New in version 3.2.
- asExpression(self) str ¶
Returns the currently selected field or expression. If a field is currently selected, the returned value will be converted to a valid expression referencing this field (ie enclosing the field name with appropriate quotations).
- Return type:
str
- buttonVisible(self) bool ¶
Returns the visibility of the button
If button is hidden, the widget essentially becomes an editable combo box
New in version 3.36.
- Return type:
bool
- buttonVisibleChanged¶
pyqtSignal(*types, name: str = …, revision: int = …, arguments: Sequence = …) -> PYQT_SIGNAL
types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.
- Parameters:
name (str = ...) –
revision (int = ...) –
arguments (Sequence = ...) –
- Return type:
PYQT_SIGNAL
- changeEvent(self, event: QEvent)¶
- Parameters:
event (QEvent) –
- childEvent(self, QChildEvent)¶
- closeEvent(self, QCloseEvent)¶
- connectNotify(self, QMetaMethod)¶
- contextMenuEvent(self, QContextMenuEvent)¶
- create(self, window: PyQt5.sip.voidptr = 0, initializeWindow: bool = True, destroyOldWindow: bool = True)¶
- currentField(self) Tuple[str, bool, bool] ¶
currentField returns the currently selected field or expression if allowed
- Parameters:
isExpression – determines if the string returned is the name of a field or an expression
isValid – determines if the expression (or field) returned is valid
- Return type:
Tuple[str, bool, bool]
- currentFieldChanged(self)¶
- currentText(self) str ¶
Returns the current text that is set in the expression area
- Return type:
str
- customEvent(self, QEvent)¶
- destroy(self, destroyWindow: bool = True, destroySubWindows: bool = True)¶
- disconnectNotify(self, QMetaMethod)¶
- dragEnterEvent(self, QDragEnterEvent)¶
- dragLeaveEvent(self, QDragLeaveEvent)¶
- dragMoveEvent(self, QDragMoveEvent)¶
- dropEvent(self, QDropEvent)¶
- editExpression(self)¶
open the expression dialog to edit the current or add a new expression
- enterEvent(self, QEvent)¶
- event(self, QEvent) bool ¶
- eventFilter(self, watched: QObject, event: QEvent) bool ¶
- Parameters:
watched (QObject) –
event (QEvent) –
- Return type:
bool
- expression(self) str ¶
Returns the currently selected field or expression. If a field is currently selected, the returned value will be converted to a valid expression referencing this field (ie enclosing the field name with appropriate quotations).
Alias for
asExpression()
- Return type:
str
- expressionDialogTitle(self) str ¶
Returns the title used for the expression dialog
- Return type:
str
- expressionEdited(self, expression: str)¶
when expression is edited by the user in the line edit, it will be checked for validity
- Parameters:
expression (str) –
- expressionEditingFinished(self)¶
when expression has been edited (finished) it will be added to the model
- fieldChanged¶
pyqtSignal(*types, name: str = …, revision: int = …, arguments: Sequence = …) -> PYQT_SIGNAL
types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.
- Parameters:
name (str = ...) –
revision (int = ...) –
arguments (Sequence = ...) –
- Return type:
PYQT_SIGNAL
- filters(self) QgsFieldProxyModel.Filters ¶
currently used filter on list of fields
- Return type:
- focusInEvent(self, QFocusEvent)¶
- focusNextChild(self) bool ¶
- focusNextPrevChild(self, bool) bool ¶
- focusOutEvent(self, QFocusEvent)¶
- focusPreviousChild(self) bool ¶
- hideEvent(self, QHideEvent)¶
- initPainter(self, QPainter)¶
- inputMethodEvent(self, QInputMethodEvent)¶
- isExpression(self) bool ¶
If the content is not just a simple field this method will return
True
.- Return type:
bool
- isExpressionValid(self, expressionStr: str) bool ¶
- Parameters:
expressionStr (str) –
- Return type:
bool
- isSignalConnected(self, QMetaMethod) bool ¶
- isValidExpression(self, expressionError: str = '') bool ¶
Returns
True
if the current expression is valid- Parameters:
expressionError (str = '') –
- Return type:
bool
- keyPressEvent(self, QKeyEvent)¶
- keyReleaseEvent(self, QKeyEvent)¶
- layer(self) QgsVectorLayer ¶
Returns the layer currently associated with the widget.
See also
- Return type:
- leaveEvent(self, QEvent)¶
- metric(self, QPaintDevice.PaintDeviceMetric) int ¶
- mouseDoubleClickEvent(self, QMouseEvent)¶
- mouseMoveEvent(self, QMouseEvent)¶
- mousePressEvent(self, QMouseEvent)¶
- mouseReleaseEvent(self, QMouseEvent)¶
- moveEvent(self, QMoveEvent)¶
- nativeEvent(self, Union[QByteArray, bytes, bytearray], PyQt5.sip.voidptr) Tuple[bool, int] ¶
- paintEvent(self, QPaintEvent)¶
- receivers(self, PYQT_SIGNAL) int ¶
- registerExpressionContextGenerator(self, generator: QgsExpressionContextGenerator)¶
Register an expression context generator class that will be used to retrieve an expression context for the widget.
- Parameters:
generator (QgsExpressionContextGenerator) – A
QgsExpressionContextGenerator
class that will be used to create an expression context when required.
- resizeEvent(self, QResizeEvent)¶
- sender(self) QObject ¶
- senderSignalIndex(self) int ¶
- setAllowEmptyFieldName(self, allowEmpty: bool)¶
Sets whether an optional empty field (“not set”) option is shown in the combo box.
See also
New in version 3.4.6.
- Parameters:
allowEmpty (bool) –
- setAllowEvalErrors(self, allowEvalErrors: bool)¶
Allow accepting expressions with evaluation errors. This can be useful when we are not able to provide an expression context of which we are sure it’s completely populated.
- Parameters:
allowEvalErrors (bool) –
- setButtonVisible(self, visible: bool)¶
Set the visibility of the button
If button is hidden, the widget essentially becomes an editable combo box
New in version 3.36.
- Parameters:
visible (bool) –
- setExpression(self, expression: str)¶
Sets the current expression text and if applicable also the field. Alias for setField.
- Parameters:
expression (str) –
- setExpressionDialogTitle(self, title: str)¶
define the title used in the expression dialog
- Parameters:
title (str) –
- setField(self, fieldName: str)¶
sets the current field or expression in the widget
- Parameters:
fieldName (str) –
- setFields(self, fields: QgsFields)¶
Sets the fields used in the widget to
fields
, this allows the widget to work without a layer.New in version 3.14.
- Parameters:
fields (QgsFields) –
- setFilters(self, filters: QgsFieldProxyModel.Filters | QgsFieldProxyModel.Filter)¶
setFilters allows filtering according to the type of field
- Parameters:
filters (Union[QgsFieldProxyModel.Filters) –
- setGeomCalculator(self, da: QgsDistanceArea)¶
Sets the geometry calculator used in the expression dialog
- Parameters:
da (QgsDistanceArea) –
- setLayer(self, layer: QgsMapLayer)¶
Sets the layer used to display the fields and expression.
See also
- Parameters:
layer (QgsMapLayer) –
- setLeftHandButtonStyle(self, isLeft: bool)¶
- Parameters:
isLeft (bool) –
- setRow(self, row: int)¶
sets the current row in the widget
- Parameters:
row (int) –
- showEvent(self, QShowEvent)¶
- tabletEvent(self, QTabletEvent)¶
- timerEvent(self, QTimerEvent)¶
- updateLineEditStyle(self, expression: str = '')¶
updateLineEditStyle will re-style (color/font) the line edit depending on content and status
- Parameters:
expression (str = '') – if expression is given it will be evaluated for the given string, otherwise it takes current expression from the model
- updateMicroFocus(self)¶
- wheelEvent(self, QWheelEvent)¶