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 dialog

Methods

actionEvent

allowEmptyFieldName

Returns True if the combo box allows the empty field ("not set") choice.

allowEvalErrors

Allow accepting expressions with evaluation errors.

appendScope

Appends a scope to the current expression context.

asExpression

Returns the currently selected field or expression.

buttonVisible

Returns the visibility of the button

changeEvent

param event:

childEvent

closeEvent

connectNotify

contextMenuEvent

create

currentField

currentField returns the currently selected field or expression if allowed

currentFieldChanged

currentText

Returns the current text that is set in the expression area

customEvent

destroy

disconnectNotify

dragEnterEvent

dragLeaveEvent

dragMoveEvent

dropEvent

editExpression

open the expression dialog to edit the current or add a new expression

enterEvent

event

eventFilter

param watched:

expression

Returns the currently selected field or expression.

expressionDialogTitle

Returns the title used for the expression dialog

expressionEdited

when expression is edited by the user in the line edit, it will be checked for validity

expressionEditingFinished

when expression has been edited (finished) it will be added to the model

filters

currently used filter on list of fields

focusInEvent

focusNextChild

focusNextPrevChild

focusOutEvent

focusPreviousChild

hideEvent

initPainter

inputMethodEvent

isExpression

If the content is not just a simple field this method will return True.

isExpressionValid

param expressionStr:

isSignalConnected

isValidExpression

Returns True if the current expression is valid

keyPressEvent

keyReleaseEvent

layer

Returns the layer currently associated with the widget.

leaveEvent

metric

mouseDoubleClickEvent

mouseMoveEvent

mousePressEvent

mouseReleaseEvent

moveEvent

nativeEvent

paintEvent

receivers

registerExpressionContextGenerator

Register an expression context generator class that will be used to retrieve an expression context for the widget.

resizeEvent

sender

senderSignalIndex

setAllowEmptyFieldName

Sets whether an optional empty field ("not set") option is shown in the combo box.

setAllowEvalErrors

Allow accepting expressions with evaluation errors.

setButtonVisible

Set the visibility of the button

setExpression

Sets the current expression text and if applicable also the field.

setExpressionDialogTitle

define the title used in the expression dialog

setField

sets the current field or expression in the widget

setFields

Sets the fields used in the widget to fields, this allows the widget to work without a layer.

setFilters

setFilters allows filtering according to the type of field

setGeomCalculator

Sets the geometry calculator used in the expression dialog

setLayer

Sets the layer used to display the fields and expression.

setLeftHandButtonStyle

param isLeft:

setRow

sets the current row in the widget

sharedPainter

showEvent

tabletEvent

timerEvent

updateLineEditStyle

updateLineEditStyle will re-style (color/font) the line edit depending on content and status

updateMicroFocus

wheelEvent

Signals

allowEvalErrorsChanged

pyqtSignal(*types, name: str = ..., revision: int = ..., arguments: Sequence = ...) -> PYQT_SIGNAL

buttonVisibleChanged

pyqtSignal(*types, name: str = ..., revision: int = ..., arguments: Sequence = ...) -> PYQT_SIGNAL

fieldChanged

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.

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.

New in version 3.0.

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).

New in version 2.14.

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()

New in version 3.0.

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:

QgsFieldProxyModel.Filters

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

setLayer()

Return type:

QgsVectorLayer

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.

New in version 3.0.

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.

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.

New in version 3.0.

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.

New in version 3.0.

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

layer()

Parameters:

layer (QgsMapLayer) –

setLeftHandButtonStyle(self, isLeft: bool)
Parameters:

isLeft (bool) –

setRow(self, row: int)

sets the current row in the widget

Parameters:

row (int) –

sharedPainter(self) QPainter
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)