Text#

class Text(**properties: Any)#

Superclasses: Widget, InitiallyUnowned, Object

Implemented Interfaces: Accessible, AccessibleText, Buildable, ConstraintTarget, Editable

The GtkText widget is a single-line text entry widget.

GtkText is the common implementation of single-line text editing that is shared between Entry, PasswordEntry, SpinButton, and other widgets. In all of these, GtkText is used as the delegate for the Editable implementation.

A fairly large set of key bindings are supported by default. If the entered text is longer than the allocation of the widget, the widget will scroll so that the cursor position is visible.

When using an entry for passwords and other sensitive information, it can be put into “password mode” using set_visibility. In this mode, entered text is displayed using a “invisible” character. By default, GTK picks the best invisible character that is available in the current font, but it can be changed with set_invisible_char.

If you are looking to add icons or progress display in an entry, look at Entry. There other alternatives for more specialized use cases, such as SearchEntry.

If you need multi-line editable text, look at TextView.

Shortcuts and Gestures#

GtkText supports the following keyboard shortcuts:

  • Shift`+:kbd:`F10 or Menu opens the context menu.

  • Ctrl`+:kbd:`A or :kbd:`Ctrl`+<kbd>&sol;</kbd> selects all the text.

  • Ctrl`+:kbd:`Shift`+:kbd:`A or :kbd:`Ctrl`+<kbd>&bsol;</kbd> unselects all.

  • Ctrl`+:kbd:`Z undoes the last modification.

  • Ctrl`+:kbd:`Y or Ctrl`+:kbd:`Shift`+:kbd:`Z redoes the last undone modification.

Additionally, the following signals have default keybindings:

Actions#

GtkText defines a set of built-in actions:

  • clipboard.copy copies the contents to the clipboard.

  • clipboard.cut copies the contents to the clipboard and deletes it from the widget.

  • clipboard.paste inserts the contents of the clipboard into the widget.

  • menu.popup opens the context menu.

  • misc.insert-emoji opens the Emoji chooser.

  • misc.toggle-visibility toggles the GtkText:visibility property.

  • selection.delete deletes the current selection.

  • selection.select-all selects all of the widgets content.

  • text.redo redoes the last change to the contents.

  • text.undo undoes the last change to the contents.

CSS nodes#

text[.read-only]
├── placeholder
├── undershoot.left
├── undershoot.right
├── [selection]
├── [block-cursor]
╰── [window.popup]

GtkText has a main node with the name text. Depending on the properties of the widget, the .read-only style class may appear.

When the entry has a selection, it adds a subnode with the name selection.

When the entry is in overwrite mode, it adds a subnode with the name block-cursor that determines how the block cursor is drawn.

The CSS node for a context menu is added as a subnode with the name popup.

The undershoot nodes are used to draw the underflow indication when content is scrolled out of view. These nodes get the .left or .right style class added depending on where the indication is drawn.

When touch is used and touch selection handles are shown, they are using CSS nodes with name cursor-handle. They get the .top or .bottom style class depending on where they are shown in relation to the selection. If there is just a single handle for the text cursor, it gets the style class .insertion-cursor.

Accessibility#

GtkText uses the NONE role, which causes it to be skipped for accessibility. This is because GtkText is expected to be used as a delegate for a GtkEditable implementation that will be represented to accessibility.

Constructors#

class Text
classmethod new() Widget#

Creates a new GtkText.

classmethod new_with_buffer(buffer: EntryBuffer) Widget#

Creates a new GtkText with the specified text buffer.

Parameters:

buffer – The buffer to use for the new GtkText.

Methods#

class Text
compute_cursor_extents(position: int) tuple[Rect, Rect]#

Determine the positions of the strong and weak cursors if the insertion point in the layout is at position.

The position of each cursor is stored as a zero-width rectangle. The strong cursor location is the location where characters of the directionality equal to the base direction are inserted. The weak cursor location is the location where characters of the directionality opposite to the base direction are inserted.

The rectangle positions are in widget coordinates.

Added in version 4.4.

Parameters:

position – the character position

get_activates_default() bool#

Returns whether pressing Enter will activate the default widget for the window containing self.

See set_activates_default.

get_attributes() AttrList | None#

Gets the attribute list that was set on the GtkText.

See set_attributes.

get_buffer() EntryBuffer#

Get the GtkEntryBuffer object which holds the text for this widget.

get_enable_emoji_completion() bool#

Returns whether Emoji completion is enabled for this GtkText widget.

get_extra_menu() MenuModel | None#

Gets the menu model for extra items in the context menu.

See set_extra_menu.

get_input_hints() InputHints#

Gets the input hints of the GtkText.

get_input_purpose() InputPurpose#

Gets the input purpose of the GtkText.

get_invisible_char() str#

Retrieves the character displayed when visibility is set to false.

Note that GTK does not compute this value unless it needs it, so the value returned by this function is not very useful unless it has been explicitly set with set_invisible_char.

get_max_length() int#

Retrieves the maximum allowed length of the text in self.

See set_max_length.

This is equivalent to getting self’s GtkEntryBuffer and calling get_max_length on it.

get_overwrite_mode() bool#

Gets whether text is overwritten when typing in the GtkText.

See set_overwrite_mode.

get_placeholder_text() str | None#

Retrieves the text that will be displayed when self is empty and unfocused

If no placeholder text has been set, None will be returned.

get_propagate_text_width() bool#

Returns whether the GtkText will grow and shrink with the content.

get_tabs() TabArray | None#

Gets the tabstops that were set on the GtkText.

See set_tabs.

get_text_length() int#

Retrieves the current length of the text in self.

This is equivalent to getting self’s GtkEntryBuffer and calling get_length on it.

get_truncate_multiline() bool#

Returns whether the GtkText will truncate multi-line text that is pasted into the widget

get_visibility() bool#

Retrieves whether the text in self is visible.

grab_focus_without_selecting() bool#

Causes self to have keyboard focus.

It behaves like grab_focus, except that it doesn’t select the contents of self. You only want to call this on some special entries which the user usually doesn’t want to replace all text in, such as search-as-you-type entries.

set_activates_default(activates: bool) None#

If activates is True, pressing Enter will activate the default widget for the window containing self.

This usually means that the dialog containing the GtkText will be closed, since the default widget is usually one of the dialog buttons.

Parameters:

activatesTrue to activate window’s default widget on Enter keypress

set_attributes(attrs: AttrList | None = None) None#

Sets attributes that are applied to the text.

Parameters:

attrs – a PangoAttrList

set_buffer(buffer: EntryBuffer) None#

Set the GtkEntryBuffer object which holds the text for this widget.

Parameters:

buffer – a GtkEntryBuffer

set_enable_emoji_completion(enable_emoji_completion: bool) None#

Sets whether Emoji completion is enabled.

If it is, typing ‘:’, followed by a recognized keyword, will pop up a window with suggested Emojis matching the keyword.

Parameters:

enable_emoji_completionTrue to enable Emoji completion

set_extra_menu(model: MenuModel | None = None) None#

Sets a menu model to add when constructing the context menu for self.

Parameters:

model – a GMenuModel

set_input_hints(hints: InputHints) None#

Sets input hints that allow input methods to fine-tune their behaviour.

Parameters:

hints – the hints

set_input_purpose(purpose: InputPurpose) None#

Sets the input purpose of the GtkText.

This can be used by on-screen keyboards and other input methods to adjust their behaviour.

Parameters:

purpose – the purpose

set_invisible_char(ch: str) None#

Sets the character to use when in “password mode”.

By default, GTK picks the best invisible char available in the current font. If you set the invisible char to 0, then the user will get no feedback at all; there will be no text on the screen as they type.

Parameters:

ch – a Unicode character

set_max_length(length: int) None#

Sets the maximum allowed length of the contents of the widget.

If the current contents are longer than the given length, then they will be truncated to fit.

This is equivalent to getting self’s GtkEntryBuffer and calling set_max_length on it.

Parameters:

length – the maximum length of the GtkText, or 0 for no maximum. (other than the maximum length of entries.) The value passed in will be clamped to the range 0-65536.

set_overwrite_mode(overwrite: bool) None#

Sets whether the text is overwritten when typing in the GtkText.

Parameters:

overwrite – new value

set_placeholder_text(text: str | None = None) None#

Sets text to be displayed in self when it is empty.

This can be used to give a visual hint of the expected contents of the GtkText.

Parameters:

text – a string to be displayed when self is empty and unfocused

set_propagate_text_width(propagate_text_width: bool) None#

Sets whether the GtkText should grow and shrink with the content.

Parameters:

propagate_text_widthTrue to propagate the text width

set_tabs(tabs: TabArray | None = None) None#

Sets tabstops that are applied to the text.

Parameters:

tabs – a PangoTabArray

set_truncate_multiline(truncate_multiline: bool) None#

Sets whether the GtkText should truncate multi-line text that is pasted into the widget.

Parameters:

truncate_multilineTrue to truncate multi-line text

set_visibility(visible: bool) None#

Sets whether the contents of the GtkText are visible or not.

When visibility is set to False, characters are displayed as the invisible char, and will also appear that way when the text in the widget is copied to the clipboard.

By default, GTK picks the best invisible character available in the current font, but it can be changed with set_invisible_char.

Note that you probably want to set input_purpose to PASSWORD or PIN to inform input methods about the purpose of this self, in addition to setting visibility to False.

Parameters:

visibleTrue if the contents of the GtkText are displayed as plaintext

unset_invisible_char() None#

Unsets the invisible char.

After calling this, the default invisible char is used again.

Properties#

class Text
props.activates_default: bool#

The type of the None singleton.

props.attributes: AttrList#

The type of the None singleton.

props.buffer: EntryBuffer#

The type of the None singleton.

props.enable_emoji_completion: bool#

The type of the None singleton.

props.extra_menu: MenuModel#

The type of the None singleton.

props.im_module: str#

The type of the None singleton.

props.input_hints: InputHints#

The type of the None singleton.

props.input_purpose: InputPurpose#

The type of the None singleton.

props.invisible_char: int#

The type of the None singleton.

props.invisible_char_set: bool#

The type of the None singleton.

props.max_length: int#

The type of the None singleton.

props.overwrite_mode: bool#

The type of the None singleton.

props.placeholder_text: str#

The type of the None singleton.

props.propagate_text_width: bool#

The type of the None singleton.

props.scroll_offset: int#

The type of the None singleton.

props.tabs: TabArray#

The type of the None singleton.

props.truncate_multiline: bool#

The type of the None singleton.

props.visibility: bool#

The type of the None singleton.

Signals#

class Text.signals
activate() None#

Emitted when the user hits the Enter key.

The default bindings for this signal are all forms of the Enter key.

backspace() None#

The type of the None singleton.

copy_clipboard() None#

The type of the None singleton.

cut_clipboard() None#

The type of the None singleton.

delete_from_cursor(type: DeleteType, count: int) None#

The type of the None singleton.

Parameters:
  • type – the granularity of the deletion, as a GtkDeleteType

  • count – the number of type units to delete

insert_at_cursor(string: str) None#

The type of the None singleton.

Parameters:

string – the string to insert

insert_emoji() None#

The type of the None singleton.

move_cursor(step: MovementStep, count: int, extend: bool) None#

The type of the None singleton.

Parameters:
  • step – the granularity of the move, as a GtkMovementStep

  • count – the number of step units to move

  • extendTrue if the move should extend the selection

paste_clipboard() None#

The type of the None singleton.

preedit_changed(preedit: str) None#

The type of the None singleton.

Parameters:

preedit – the current preedit string

toggle_overwrite() None#

The type of the None singleton.

Fields#

class Text
parent_instance#