RichTextLabel

Наследует: Control < CanvasItem < Node < Object

Элемент управления для отображения текста, который может содержать различные стили шрифтов, изображения и базовое форматирование.

Описание

Элемент управления для отображения текста, который может содержать пользовательские шрифты, изображения и базовое форматирование. RichTextLabel управляет ими как внутренним стеком тегов. Он также адаптируется к заданной ширине/высоте.

Примечание: newline(), push_paragraph(), "\n", "\r\n", тег p и теги выравнивания начинают новый абзац. Каждый абзац обрабатывается независимо, в своем собственном контексте BiDi. Если вы хотите принудительно перенести строку внутри абзаца, можно использовать любой другой символ разрыва строки, например, Form Feed (U+000C), Next Line (U+0085), Line Separator (U+2028).

Примечание: Присвоения text очищают стек тегов и восстанавливают его из содержимого свойства. Любые изменения, внесенные в text, удалят предыдущие изменения, внесенные из других ручных источников, таких как append_text() и методы push_* / pop().

Примечание: RichTextLabel не поддерживает переплетенные теги BBCode. Например, вместо использования [b]bold[i]bold italic[/b]italic[/i] используйте [b]bold[i]bold italic[/i][/b][i]italic[/i].

Примечание: Функции push_*/pop_* не повлияют на BBCode.

Примечание: Пока bbcode_enabled включен, теги выравнивания, такие как [center], будут иметь приоритет над настройкой horizontal_alignment, которая определяет выравнивание текста по умолчанию.

Обучающие материалы

Свойства

AutowrapMode

autowrap_mode

3

BitField[LineBreakFlag]

autowrap_trim_flags

192

bool

bbcode_enabled

false

bool

clip_contents

true (overrides Control)

bool

context_menu_enabled

false

Array

custom_effects

[]

bool

deselect_on_focus_loss_enabled

true

bool

drag_and_drop_selection_enabled

true

bool

fit_content

false

FocusMode

focus_mode

3 (overrides Control)

bool

hint_underlined

true

HorizontalAlignment

horizontal_alignment

0

BitField[JustificationFlag]

justification_flags

163

String

language

""

bool

meta_underlined

true

int

progress_bar_delay

1000

bool

scroll_active

true

bool

scroll_following

false

bool

scroll_following_visible_characters

false

bool

selection_enabled

false

bool

shortcut_keys_enabled

true

StructuredTextParser

structured_text_bidi_override

0

Array

structured_text_bidi_override_options

[]

int

tab_size

4

PackedFloat32Array

tab_stops

PackedFloat32Array()

String

text

""

TextDirection

text_direction

0

bool

threaded

false

VerticalAlignment

vertical_alignment

0

int

visible_characters

-1

VisibleCharactersBehavior

visible_characters_behavior

0

float

visible_ratio

1.0

Методы

void

add_hr(width: int = 90, height: int = 2, color: Color = Color(1, 1, 1, 1), alignment: HorizontalAlignment = 1, width_in_percent: bool = true, height_in_percent: bool = false)

void

add_image(image: Texture2D, width: int = 0, height: int = 0, color: Color = Color(1, 1, 1, 1), inline_align: InlineAlignment = 5, region: Rect2 = Rect2(0, 0, 0, 0), key: Variant = null, pad: bool = false, tooltip: String = "", width_in_percent: bool = false, height_in_percent: bool = false, alt_text: String = "")

void

add_text(text: String)

void

append_text(bbcode: String)

void

clear()

void

deselect()

int

get_character_line(character: int)

int

get_character_paragraph(character: int)

int

get_content_height() const

int

get_content_width() const

int

get_line_count() const

int

get_line_height(line: int) const

float

get_line_offset(line: int)

Vector2i

get_line_range(line: int)

int

get_line_width(line: int) const

PopupMenu

get_menu() const

int

get_paragraph_count() const

float

get_paragraph_offset(paragraph: int)

String

get_parsed_text() const

String

get_selected_text() const

int

get_selection_from() const

float

get_selection_line_offset() const

int

get_selection_to() const

int

get_total_character_count() const

VScrollBar

get_v_scroll_bar()

Rect2i

get_visible_content_rect() const

int

get_visible_line_count() const

int

get_visible_paragraph_count() const

void

install_effect(effect: Variant)

bool

invalidate_paragraph(paragraph: int)

bool

is_finished() const

bool

is_menu_visible() const

bool

is_ready() const

void

menu_option(option: int)

void

newline()

void

parse_bbcode(bbcode: String)

Dictionary

parse_expressions_for_values(expressions: PackedStringArray)

void

pop()

void

pop_all()

void

pop_context()

void

push_bgcolor(bgcolor: Color)

void

push_bold()

void

push_bold_italics()

void

push_cell()

void

push_color(color: Color)

void

push_context()

void

push_customfx(effect: RichTextEffect, env: Dictionary)

void

push_dropcap(string: String, font: Font, size: int, dropcap_margins: Rect2 = Rect2(0, 0, 0, 0), color: Color = Color(1, 1, 1, 1), outline_size: int = 0, outline_color: Color = Color(0, 0, 0, 0))

void

push_fgcolor(fgcolor: Color)

void

push_font(font: Font, font_size: int = 0)

void

push_font_size(font_size: int)

void

push_hint(description: String)

void

push_indent(level: int)

void

push_italics()

void

push_language(language: String)

void

push_list(level: int, type: ListType, capitalize: bool, bullet: String = "•")

void

push_meta(data: Variant, underline_mode: MetaUnderline = 1, tooltip: String = "")

void

push_mono()

void

push_normal()

void

push_outline_color(color: Color)

void

push_outline_size(outline_size: int)

void

push_paragraph(alignment: HorizontalAlignment, base_direction: TextDirection = 0, language: String = "", st_parser: StructuredTextParser = 0, justification_flags: BitField[JustificationFlag] = 163, tab_stops: PackedFloat32Array = PackedFloat32Array())

void

push_strikethrough(color: Color = Color(0, 0, 0, 0))

void

push_table(columns: int, inline_align: InlineAlignment = 0, align_to_row: int = -1, name: String = "")

void

push_underline(color: Color = Color(0, 0, 0, 0))

void

reload_effects()

bool

remove_paragraph(paragraph: int, no_invalidate: bool = false)

void

scroll_to_line(line: int)

void

scroll_to_paragraph(paragraph: int)

void

scroll_to_selection()

void

select_all()

void

set_cell_border_color(color: Color)

void

set_cell_padding(padding: Rect2)

void

set_cell_row_background_color(odd_row_bg: Color, even_row_bg: Color)

void

set_cell_size_override(min_size: Vector2, max_size: Vector2)

void

set_table_column_expand(column: int, expand: bool, ratio: int = 1, shrink: bool = true)

void

set_table_column_name(column: int, name: String)

void

update_image(key: Variant, mask: BitField[ImageUpdateMask], image: Texture2D, width: int = 0, height: int = 0, color: Color = Color(1, 1, 1, 1), inline_align: InlineAlignment = 5, region: Rect2 = Rect2(0, 0, 0, 0), pad: bool = false, tooltip: String = "", width_in_percent: bool = false, height_in_percent: bool = false)

Свойства темы

Color

default_color

Color(1, 1, 1, 1)

Color

font_outline_color

Color(0, 0, 0, 1)

Color

font_selected_color

Color(0, 0, 0, 0)

Color

font_shadow_color

Color(0, 0, 0, 0)

Color

selection_color

Color(0.1, 0.1, 1, 0.8)

Color

table_border

Color(0, 0, 0, 0)

Color

table_even_row_bg

Color(0, 0, 0, 0)

Color

table_odd_row_bg

Color(0, 0, 0, 0)

int

line_separation

0

int

outline_size

0

int

paragraph_separation

0

int

shadow_offset_x

1

int

shadow_offset_y

1

int

shadow_outline_size

1

int

strikethrough_alpha

50

int

table_h_separation

3

int

table_v_separation

3

int

text_highlight_h_padding

3

int

text_highlight_v_padding

3

int

underline_alpha

50

Font

bold_font

Font

bold_italics_font

Font

italics_font

Font

mono_font

Font

normal_font

int

bold_font_size

int

bold_italics_font_size

int

italics_font_size

int

mono_font_size

int

normal_font_size

Texture2D

horizontal_rule

StyleBox

focus

StyleBox

normal


Сигналы

finished() 🔗

Срабатывает, когда документ полностью загружен.

Примечание: Это может произойти до того, как текст будет обработан для рисования. Значения прокрутки могут быть недействительны, пока документ не будет отрисован в первый раз после этого сигнала.


meta_clicked(meta: Variant) 🔗

Срабатывает, когда пользователь нажимает на содержимое между метатегами (URL). Если мета определена в BBCode, например. codeskip-lintText[/code], то параметр для этого сигнала всегда будет типа [String]. Если требуется определенный тип или объект, необходимо использовать метод [method push_meta] для ручной вставки данных в стек тегов. В качестве альтернативы можно преобразовать входные данные [String] в нужный тип на основе их содержимого (например, вызвав [method JSON.parse] для него).

Например, следующий метод можно подключить к [signal meta_clicked], чтобы открывать нажатые URL-адреса с помощью веб-браузера пользователя по умолчанию:

[codeblocks] [gdscript]

# Это предполагает, что сигнал meta_clicked RichTextLabel был подключен # к функции ниже с помощью диалогового окна подключения сигнала. func _richtextlabel_on_meta_clicked(meta):

# meta имеет тип Variant, поэтому преобразуйте его в String, чтобы избежать ошибок скрипта во время выполнения. OS.shell_open(str(meta))[/gdscript]

[/codeblocks]


meta_hover_ended(meta: Variant) 🔗

Срабатывает, когда указатель мыши покидает мета-тег.


meta_hover_started(meta: Variant) 🔗

Срабатывает при попадании мыши на мета-тег.


Перечисления

enum ListType: 🔗

ListType LIST_NUMBERS = 0

Каждый элемент списка имеет числовой маркер.

ListType LIST_LETTERS = 1

Каждый элемент списка имеет буквенный маркер.

ListType LIST_ROMAN = 2

Каждый пункт списка имеет римский номер-маркер.

ListType LIST_DOTS = 3

Каждый элемент списка имеет маркер в виде заполненного круга.


enum MenuItems: 🔗

MenuItems MENU_COPY = 0

Копирует выделенный текст.

MenuItems MENU_SELECT_ALL = 1

Выделяет весь текст RichTextLabel.

MenuItems MENU_MAX = 2

Представляет размер перечисления MenuItems.


enum MetaUnderline: 🔗

MetaUnderline META_UNDERLINE_NEVER = 0

Метатег не отображает подчеркивание, даже если meta_underlined имеет значение true.

MetaUnderline META_UNDERLINE_ALWAYS = 1

Если meta_underlined имеет значение true, метатег всегда отображает подчеркивание.

MetaUnderline META_UNDERLINE_ON_HOVER = 2

Если meta_underlined имеет значение true, метатег отображает подчеркивание при наведении на него курсора мыши.


flags ImageUpdateMask: 🔗

ImageUpdateMask UPDATE_TEXTURE = 1

Если этот бит установлен, update_image() изменяет текстуру изображения.

ImageUpdateMask UPDATE_SIZE = 2

Если этот бит установлен, update_image() изменяет размер изображения.

ImageUpdateMask UPDATE_COLOR = 4

Если этот бит установлен, update_image() изменяет цвет изображения.

ImageUpdateMask UPDATE_ALIGNMENT = 8

Если этот бит установлен, update_image() изменяет выравнивание изображения по строке.

ImageUpdateMask UPDATE_REGION = 16

Если этот бит установлен, update_image() изменяет область текстуры изображения.

ImageUpdateMask UPDATE_PAD = 32

Если этот бит установлен, update_image() изменяет заполнение изображения.

ImageUpdateMask UPDATE_TOOLTIP = 64

Если этот бит установлен, update_image() изменяет всплывающую подсказку изображения.

ImageUpdateMask UPDATE_WIDTH_IN_PERCENT = 128

Если этот бит установлен, update_image() изменяет ширину изображения с/на проценты.


Описания свойств

AutowrapMode autowrap_mode = 3 🔗

Если задано значение, отличное от TextServer.AUTOWRAP_OFF, текст будет заключен внутри ограничивающего прямоугольника узла.


BitField[LineBreakFlag] autowrap_trim_flags = 192 🔗

Флаги обрезки пространства автопереноса. См. TextServer.BREAK_TRIM_START_EDGE_SPACES и TextServer.BREAK_TRIM_END_EDGE_SPACES для получения дополнительной информации.


bool bbcode_enabled = false 🔗

  • void set_use_bbcode(value: bool)

  • bool is_using_bbcode()

Если true, метка использует форматирование BBCode.

Примечание: Это влияет только на содержимое text, а не на стек тегов.


bool context_menu_enabled = false 🔗

  • void set_context_menu_enabled(value: bool)

  • bool is_context_menu_enabled()

Если true, щелчок правой кнопкой мыши отображает контекстное меню.


Array custom_effects = [] 🔗

  • void set_effects(value: Array)

  • Array get_effects()

Установленные в данный момент пользовательские эффекты. Это массив RichTextEffect.

Чтобы добавить пользовательский эффект, удобнее использовать install_effect().


bool deselect_on_focus_loss_enabled = true 🔗

  • void set_deselect_on_focus_loss_enabled(value: bool)

  • bool is_deselect_on_focus_loss_enabled()

Если true, выделенный текст будет снят с выделения при потере фокуса.


bool drag_and_drop_selection_enabled = true 🔗

  • void set_drag_and_drop_selection_enabled(value: bool)

  • bool is_drag_and_drop_selection_enabled()

Если true, разрешено перетаскивание выделенного текста.


bool fit_content = false 🔗

  • void set_fit_content(value: bool)

  • bool is_fit_content_enabled()

Если true, минимальный размер метки будет автоматически обновлен в соответствии с ее содержимым, соответствуя поведению Label.


bool hint_underlined = true 🔗

  • void set_hint_underline(value: bool)

  • bool is_hint_underlined()

Если true, метка подчеркивает теги подсказок, такие как [hint=description]{text}[/hint].


HorizontalAlignment horizontal_alignment = 0 🔗

Управляет горизонтальным выравниванием текста. Поддерживает выравнивание по левому краю, по центру, по правому краю и заполнение (также известное как выравнивание по ширине).


BitField[JustificationFlag] justification_flags = 163 🔗

Правила выравнивания заливки линий.


String language = "" 🔗

Код языка, используемый алгоритмами переноса строк и форматирования текста. Если оставить поле пустым, будет использоваться текущая локаль.


bool meta_underlined = true 🔗

  • void set_meta_underline(value: bool)

  • bool is_meta_underlined()

Если true, метка подчеркивает метатеги, такие как [url]{text}[/url]. Эти теги могут вызывать функцию при щелчке, если meta_clicked подключен к функции.


int progress_bar_delay = 1000 🔗

  • void set_progress_bar_delay(value: int)

  • int get_progress_bar_delay()

Задержка, после которой отображается индикатор выполнения загрузки, в миллисекундах. Установите -1, чтобы полностью отключить индикатор выполнения.

Примечание: Индикатор выполнения отображается только если включен threaded.


bool scroll_active = true 🔗

  • void set_scroll_active(value: bool)

  • bool is_scroll_active()

Если true, полоса прокрутки видна. Установка этого значения в false не блокирует прокрутку полностью. См. scroll_to_line().


bool scroll_following = false 🔗

  • void set_scroll_follow(value: bool)

  • bool is_scroll_following()

Если true, окно прокручивается вниз для автоматического отображения нового содержимого.


bool scroll_following_visible_characters = false 🔗

  • void set_scroll_follow_visible_characters(value: bool)

  • bool is_scroll_following_visible_characters()

Если true, окно прокручивается для отображения последней видимой строки при изменении visible_characters или visible_ratio.


bool selection_enabled = false 🔗

  • void set_selection_enabled(value: bool)

  • bool is_selection_enabled()

Еслиtrue, метка позволяет выделить текст.


bool shortcut_keys_enabled = true 🔗

  • void set_shortcut_keys_enabled(value: bool)

  • bool is_shortcut_keys_enabled()

Если true, сочетания клавиш для пунктов контекстного меню включены, даже если контекстное меню отключено.


StructuredTextParser structured_text_bidi_override = 0 🔗

Установите переопределение алгоритма BiDi для структурированного текста.


Array structured_text_bidi_override_options = [] 🔗

  • void set_structured_text_bidi_override_options(value: Array)

  • Array get_structured_text_bidi_override_options()

Установите дополнительные параметры для переопределения BiDi.


int tab_size = 4 🔗

  • void set_tab_size(value: int)

  • int get_tab_size()

Количество пробелов, связанных с длиной одной табуляции. Не влияет на \t в текстовых тегах, только на теги отступов.


PackedFloat32Array tab_stops = PackedFloat32Array() 🔗

Выравнивает текст по указанным позициям табуляции.

Note: The returned array is copied and any changes to it will not update the original property value. See PackedFloat32Array for more details.


String text = "" 🔗

Текст label в формате BBCode. Не отражает ручные изменения внутреннего стека тегов. Стирает изменения, внесенные другими методами при редактировании.

Примечание: Если bbcode_enabled имеет значение true, не рекомендуется использовать оператор += с text (например, text += "some string"), так как он заменяет весь текст и может вызвать замедление. Он также сотрет весь BBCode, добавленный в стек с помощью методов push_*. Вместо этого используйте append_text() для добавления текста, если только вам не нужно закрыть тег, открытый в более раннем вызове метода.


TextDirection text_direction = 0 🔗

Направление написания базового текста.


bool threaded = false 🔗

  • void set_threaded(value: bool)

  • bool is_threaded()

Если true, обработка текста выполняется в фоновом потоке.


VerticalAlignment vertical_alignment = 0 🔗

Управляет вертикальным выравниванием текста. Поддерживает верх, центр, низ и заполнение.


int visible_characters = -1 🔗

  • void set_visible_characters(value: int)

  • int get_visible_characters()

Количество отображаемых символов. Если задано значение -1, отображаются все символы. Это может быть полезно при анимации текста, появляющегося в диалоговом окне.

Примечание: Установка этого свойства соответствующим образом обновляет visible_ratio.

Примечание: Символы считаются кодовыми точками Unicode. Одна видимая графема может содержать несколько кодовых точек (например, некоторые эмодзи используют три кодовые точки). Одна кодовая точка может содержать два символа UTF-16, которые используются в строках C#.


VisibleCharactersBehavior visible_characters_behavior = 0 🔗

Поведение обрезки, когда задано visible_characters или visible_ratio.


float visible_ratio = 1.0 🔗

  • void set_visible_ratio(value: float)

  • float get_visible_ratio()

Доля символов для отображения относительно общего числа символов (см. get_total_character_count()). Если установлено значение 1.0, отображаются все символы. Если установлено значение 0.5, отображается только половина символов. Это может быть полезно при анимации текста, появляющегося в диалоговом окне.

Примечание: Установка этого свойства соответствующим образом обновляет visible_characters.


Описания метода

void add_hr(width: int = 90, height: int = 2, color: Color = Color(1, 1, 1, 1), alignment: HorizontalAlignment = 1, width_in_percent: bool = true, height_in_percent: bool = false) 🔗

Добавляет горизонтальную линию, которую можно использовать для разделения контента.

Если задан width_in_percent, width значения представляют собой проценты от ширины элемента управления, а не пиксели.

Если задан height_in_percent, [param height значения представляют собой проценты от ширины элемента управления, а не пиксели.


void add_image(image: Texture2D, width: int = 0, height: int = 0, color: Color = Color(1, 1, 1, 1), inline_align: InlineAlignment = 5, region: Rect2 = Rect2(0, 0, 0, 0), key: Variant = null, pad: bool = false, tooltip: String = "", width_in_percent: bool = false, height_in_percent: bool = false, alt_text: String = "") 🔗

Добавляет открывающий и закрывающий теги изображения в стек тегов, при необходимости предоставляя параметры width и height для изменения размера изображения, color для изменения оттенка изображения и region для использования только частей изображения.

Если width или height равны 0, размер изображения будет скорректирован с сохранением исходного соотношения сторон.

Если width и height не заданы, а region задан, будет использоваться прямоугольник области.

key — необязательный идентификатор, который можно использовать для изменения изображения с помощью update_image().

Если задан параметр pad, а изображение меньше размера, указанного параметрами width и height, вместо масштабирования добавляется отступ изображения для соответствия размеру.

Если задан параметр width_in_percent, значения параметра width представляют собой проценты от ширины элемента управления, а не пиксели.

Если задан параметр height_in_percent, значения параметра height представляют собой проценты от ширины элемента управления, а не пиксели.

alt_text используется в качестве описания изображения для вспомогательных приложений.


void add_text(text: String) 🔗

Добавляет необработанный текст, не прошедший анализ с помощью BBCode, в стек тегов.


void append_text(bbcode: String) 🔗

Анализирует bbcode и добавляет теги в стек тегов по мере необходимости.

Примечание: Используя этот метод, вы не можете закрыть тег, который был открыт в предыдущем вызове append_text(). Это делается для повышения производительности, особенно при обновлении больших RichTextLabels, поскольку перестроение всего BBCode каждый раз будет медленнее. Если вам абсолютно необходимо закрыть тег в будущем вызове метода, добавьте text вместо использования append_text().


void clear() 🔗

Очищает стек тегов, в результате чего метка ничего не отображает.

Примечание: Этот метод не влияет на text, и его содержимое снова отобразится, если метка будет перерисована. Однако установка text на пустую String также очищает стек.


void deselect() 🔗

Очищает текущий выбор.


int get_character_line(character: int) 🔗

Возвращает номер строки указанной позиции символа. Номера строк и символов индексируются нулем.

Примечание: Если включен threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или signalfinished, чтобы определить, полностью ли загружен документ.


int get_character_paragraph(character: int) 🔗

Возвращает номер абзаца указанной позиции символа. Номера абзацев и символов индексируются нулем.

Примечание: Если включен threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или signalfinished, чтобы определить, полностью ли загружен документ.


int get_content_height() const 🔗

Возвращает высоту содержимого.

Примечание: Этот метод всегда возвращает полный размер содержимого и не зависит от visible_ratio и visible_characters. Чтобы получить размер видимого содержимого, используйте get_visible_content_rect().

Примечание: Если включен threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или finished, чтобы определить, полностью ли загружен документ.


int get_content_width() const 🔗

Возвращает ширину содержимого.

Примечание: Этот метод всегда возвращает полный размер содержимого и не зависит от visible_ratio и visible_characters. Чтобы получить размер видимого содержимого, используйте get_visible_content_rect().

Примечание: Если включен threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или finished, чтобы определить, полностью ли загружен документ.


int get_line_count() const 🔗

Возвращает общее количество строк в тексте. Перенесённый текст считается за несколько строк.

Примечание: Если включено threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или finished, чтобы определить, полностью ли загружен документ.


int get_line_height(line: int) const 🔗

Возвращает высоту строки, найденной по указанному индексу.

Примечание: Если включен threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или finished, чтобы определить, полностью ли загружен документ.


float get_line_offset(line: int) 🔗

Возвращает вертикальное смещение строки, найденной по указанному индексу.

Примечание: Если включен threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или signalfinished, чтобы определить, полностью ли загружен документ.


Vector2i get_line_range(line: int) 🔗

Возвращает индексы первого и последнего видимых символов для заданной line в виде Vector2i.

Примечание: Если visible_characters_behavior установлен в TextServer.VC_CHARS_BEFORE_SHAPING, учитываются только видимые перенесенные строки.

Примечание: Если threaded включен, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или signalfinished, чтобы определить, полностью ли загружен документ.


int get_line_width(line: int) const 🔗

Возвращает ширину строки, найденной по указанному индексу.

Примечание: Если включен threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или finished, чтобы определить, полностью ли загружен документ.


PopupMenu get_menu() const 🔗

Возвращает PopupMenu этого RichTextLabel. По умолчанию это меню отображается при щелчке правой кнопкой мыши по RichTextLabel.

Вы можете добавлять пользовательские пункты меню или удалять стандартные. Убедитесь, что ваши идентификаторы не конфликтуют со стандартными (см. MenuItems). Например:

func _ready():
    var menu = get_menu()
    # Удалить пункт «Выбрать все» ("Select All").
    menu.remove_item(MENU_SELECT_ALL)
    # Добавить пользовательские элементы.
    menu.add_separator()
    menu.add_item("Duplicate Text", MENU_MAX + 1)
    # Подключить обратный звонок.
    menu.id_pressed.connect(_on_item_pressed)

func _on_item_pressed(id):
    if id == MENU_MAX + 1:
        add_text("\n" + get_parsed_text())

Предупреждение: Это обязательный внутренний узел, его удаление и освобождение может привести к сбою. Если вы хотите скрыть его или любого из его дочерних элементов, используйте их свойство Window.visible.


int get_paragraph_count() const 🔗

Возвращает общее количество абзацев (теги новых строк или p в текстовых тегах стека тегов). Рассматривает перенесенный текст как один абзац.


float get_paragraph_offset(paragraph: int) 🔗

Возвращает вертикальное смещение абзаца, найденного по указанному индексу.

Примечание: Если включен threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или signalfinished, чтобы определить, полностью ли загружен документ.


String get_parsed_text() const 🔗

Возвращает текст без разметки BBCode.


String get_selected_text() const 🔗

Возвращает текущий выделенный текст. Не включает BBCodes.


int get_selection_from() const 🔗

Возвращает текущий индекс первого символа выделения, если выделение активно, в противном случае -1. Не включает BBCodes.


float get_selection_line_offset() const 🔗

Возвращает смещение вертикальной линии текущего выделения, если выделение активно, в противном случае -1.0.


int get_selection_to() const 🔗

Возвращает последний индекс символа текущего выделения, если выделение активно, в противном случае -1. Не включает BBCodes.


int get_total_character_count() const 🔗

Возвращает общее количество символов из текстовых тегов. Не включает BBCodes.


VScrollBar get_v_scroll_bar() 🔗

Возвращает вертикальную полосу прокрутки.

Предупреждение: Это обязательный внутренний узел, его удаление и освобождение может привести к сбою. Если вы хотите скрыть его или любой из его дочерних элементов, используйте их свойство CanvasItem.visible.


Rect2i get_visible_content_rect() const 🔗

Возвращает ограничивающий прямоугольник видимого содержимого.

Примечание: Этот метод возвращает правильное значение только после рисования метки.

extends RichTextLabel

@export var background_panel: Panel

func _ready():
    await draw
    background_panel.position = get_visible_content_rect().position
    background_panel.size = get_visible_content_rect().size

int get_visible_line_count() const 🔗

Возвращает количество видимых строк.

Примечание: Этот метод возвращает правильное значение только после отрисовки метки.

Примечание: Если включен параметр threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или finished, чтобы определить, полностью ли загружен документ.


int get_visible_paragraph_count() const 🔗

Возвращает количество видимых абзацев. Абзац считается видимым, если видна хотя бы одна его строка.

Примечание: Этот метод возвращает корректное значение только после отрисовки метки.

Примечание: Если включен параметр threaded, этот метод возвращает значение для загруженной части документа. Используйте is_finished() или finished, чтобы определить, полностью ли загружен документ.


void install_effect(effect: Variant) 🔗

Устанавливает пользовательский эффект. Это также можно сделать в Инспекторе через свойство custom_effects. effect должен быть допустимым RichTextEffect.

Пример: Со следующим скриптом, расширяющим RichTextEffect:

# effect.gd
class_name MyCustomEffect
extends RichTextEffect

var bbcode = "my_custom_effect"

# ...

Вышеуказанный эффект можно установить в RichTextLabel из скрипта:

# rich_text_label.gd
extends RichTextLabel

func _ready():
    install_effect(MyCustomEffect.new())

    # Альтернативный вариант, если не используется `class_name` в скрипте, расширяющем RichTextEffect:
    install_effect(preload("res://effect.gd").new())

bool invalidate_paragraph(paragraph: int) 🔗

Делает недействительным paragraph и все последующие кэши абзацев.


bool is_finished() const 🔗

Делает недействительным paragraph и все последующие абзацы кэша. Если threaded включен, возвращает true, если фоновый поток завершил обработку текста, в противном случае всегда возвращает true.


bool is_menu_visible() const 🔗

Возвращает, видимо ли меню. Используйте это вместо get_menu().visible для повышения производительности (чтобы избежать создания меню).


bool is_ready() const 🔗

Устарело: Use is_finished() instead.

Делает недействительным paragraph и все последующие абзацы кэша. Если threaded включен, возвращает true, если фоновый поток завершил обработку текста, в противном случае всегда возвращает true.


void menu_option(option: int) 🔗

Выполняет заданное действие, определенное в перечислении MenuItems.


void newline() 🔗

Добавляет тег новой строки в стек тегов.


void parse_bbcode(bbcode: String) 🔗

Версия назначения append_text(). Очищает стек тегов и вставляет новый контент.


Dictionary parse_expressions_for_values(expressions: PackedStringArray) 🔗

Анализирует параметр BBCode expressions в словарь.


void pop() 🔗

Завершает текущий тег. Используйте после методов push_*, чтобы вручную закрыть BBCodes. Не требуется следовать за методами add_*.


void pop_all() 🔗

Завершает все теги, открытые методами push_*.


void pop_context() 🔗

Завершает теги, открытые после последнего вызова push_context() (включая маркер контекста), или все теги, если в стеке нет маркера контекста.


void push_bgcolor(bgcolor: Color) 🔗

Добавляет тег [bgcolor] в стек тегов.

Примечание: По умолчанию к фоновому цвету применен отступ, который контролируется с помощью text_highlight_h_padding и text_highlight_v_padding. Это может привести к перекрывающимся выделениям, если фоновые цвета размещены на соседних строках/столбцах, поэтому рассмотрите возможность установки этих элементов темы на 0, если вы хотите этого избежать.


void push_bold() 🔗

Добавляет тег [bgcolor] в стек тегов.


void push_bold_italics() 🔗

Добавляет тег [font] с полужирным курсивным шрифтом в стек тегов.


void push_cell() 🔗

Добавляет тег [cell] в стек тегов. Должен находиться внутри тега [table]. Подробности см. в push_table(). Используйте set_table_column_expand() для установки коэффициента расширения столбца, set_cell_border_color() для установки границы ячейки, set_cell_row_background_color() для установки фона ячейки, set_cell_size_override() для переопределения размера ячейки и set_cell_padding() для установки отступа.


void push_color(color: Color) 🔗

Добавляет тег [color] в стек тегов.


void push_context() 🔗

Добавляет маркер контекста в стек тегов. См. pop_context().


void push_customfx(effect: RichTextEffect, env: Dictionary) 🔗

Добавляет пользовательский тег эффекта в стек тегов. Эффект не обязательно должен быть в custom_effects. Окружение напрямую передается эффекту.


void push_dropcap(string: String, font: Font, size: int, dropcap_margins: Rect2 = Rect2(0, 0, 0, 0), color: Color = Color(1, 1, 1, 1), outline_size: int = 0, outline_color: Color = Color(0, 0, 0, 0)) 🔗

Добавляет тег [dropcap] в стек тегов. Буквица (опущенная прописная буква) — декоративный элемент в начале абзаца, превышающий по размеру остальной текст.


void push_fgcolor(fgcolor: Color) 🔗

Добавляет тег [fgcolor] в стек тегов.

Примечание: Цвет переднего плана имеет отступ по умолчанию, который контролируется с помощью text_highlight_h_padding и text_highlight_v_padding. Это может привести к перекрывающимся выделениям, если цвета переднего плана размещены на соседних строках/столбцах, поэтому рассмотрите возможность установки этих элементов темы на 0, если вы хотите этого избежать.


void push_font(font: Font, font_size: int = 0) 🔗

Добавляет тег [font] в стек тегов. Переопределяет шрифты по умолчанию на время его действия.

Передача 0 в font_size будет использовать существующий размер шрифта по умолчанию.


void push_font_size(font_size: int) 🔗

Добавляет тег [font_size] в стек тегов. Переопределяет размер шрифта по умолчанию на время его действия.


void push_hint(description: String) 🔗

Добавляет тег [hint] в стек тегов. То же, что и BBCode [hint=something]{text}[/hint].


void push_indent(level: int) 🔗

Добавляет тег [indent] в стек тегов. Умножает level на текущий tab_size для определения новой длины поля.


void push_italics() 🔗

Добавляет тег [font] с курсивным шрифтом в стек тегов. Это то же самое, что добавить тег [i], если в данный момент он не находится в теге [b].


void push_language(language: String) 🔗

Добавляет языковой код, используемый для алгоритма формирования текста и функций шрифтов Open-Type.


void push_list(level: int, type: ListType, capitalize: bool, bullet: String = "•") 🔗

Добавляет тег [ol] или [ul] в стек тегов. Умножает level на текущий tab_size для определения новой длины поля.


void push_meta(data: Variant, underline_mode: MetaUnderline = 1, tooltip: String = "") 🔗

Добавляет метатег (meta tag) в стек тегов. Аналогично BBCode [url=something]{text}[/url], но поддерживает не-String типы метаданных.

Если meta_underlined равно true, метатеги отображают подчеркивание. Это поведение можно настроить с помощью underline_mode.

Примечание: Метатеги по умолчанию ничего не делают при щелчке. Чтобы назначить поведение при щелчке, подключите meta_clicked к функции, которая вызывается при щелчке по метатегу.


void push_mono() 🔗

Добавляет тег [font] с моноширинным шрифтом в стек тегов.


void push_normal() 🔗

Добавляет тег [font] с обычным шрифтом в стек тегов.


void push_outline_color(color: Color) 🔗

Добавляет тег [outline_color] в стек тегов. Добавляет контур текста на его длительность.


void push_outline_size(outline_size: int) 🔗

Добавляет тег [outline_size] в стек тегов. Переопределяет размер контура текста по умолчанию на его длительность.


void push_paragraph(alignment: HorizontalAlignment, base_direction: TextDirection = 0, language: String = "", st_parser: StructuredTextParser = 0, justification_flags: BitField[JustificationFlag] = 163, tab_stops: PackedFloat32Array = PackedFloat32Array()) 🔗

Добавляет тег [p] в стек тегов.


void push_strikethrough(color: Color = Color(0, 0, 0, 0)) 🔗

Adds a [s] tag to the tag stack. If color's alpha value is 0.0, the current font's color with its alpha multiplied by strikethrough_alpha is used.


void push_table(columns: int, inline_align: InlineAlignment = 0, align_to_row: int = -1, name: String = "") 🔗

Добавляет тег [table=columns,inline_align] в стек тегов. Используйте set_table_column_expand() для установки коэффициента расширения столбцов. Используйте push_cell() для добавления ячеек. name используется в качестве имени таблицы для вспомогательных приложений.


void push_underline(color: Color = Color(0, 0, 0, 0)) 🔗

Adds a [u] tag to the tag stack. If color's alpha value is 0.0, the current font's color with its alpha multiplied by underline_alpha is used.


void reload_effects() 🔗

Перезагружает пользовательские эффекты. Полезно, когда custom_effects изменяется вручную.


bool remove_paragraph(paragraph: int, no_invalidate: bool = false) 🔗

Удаляет абзац содержимого из метки. Возвращает true, если абзац существует.

Аргумент paragraph — это индекс абзаца для удаления, он может принимать значения в интервале [0, get_paragraph_count() - 1].

Если no_invalidate установлен в true, кэш для последующих абзацев не становится недействительным. Используйте его для более быстрых обновлений, если удаленный абзац полностью автономен (не имеет незакрытых тегов) или этот вызов является частью сложной операции редактирования и invalidate_paragraph() будет вызван в конце операции.


void scroll_to_line(line: int) 🔗

Прокручивает верхнюю строку окна для соответствия line.


void scroll_to_paragraph(paragraph: int) 🔗

Прокручивает верхнюю строку окна до соответствия первой строке paragraph.


void scroll_to_selection() 🔗

Прокручивает к началу текущего выделения.


void select_all() 🔗

Выделить весь текст.

Если selection_enabled равно false, выделение не произойдет.


void set_cell_border_color(color: Color) 🔗

Устанавливает цвет границы ячейки таблицы.


void set_cell_padding(padding: Rect2) 🔗

Устанавливает внутренние отступы ячейки таблицы.


void set_cell_row_background_color(odd_row_bg: Color, even_row_bg: Color) 🔗

Задает цвет ячейки таблицы. Можно указать отдельные цвета для чередующихся строк.


void set_cell_size_override(min_size: Vector2, max_size: Vector2) 🔗

Устанавливает минимальные и максимальные значения размера ячейки таблицы.


void set_table_column_expand(column: int, expand: bool, ratio: int = 1, shrink: bool = true) 🔗

Редактирует параметры расширения выбранного столбца. Если expand имеет значение true, столбец расширяется пропорционально своему коэффициенту расширения по сравнению с коэффициентами других столбцов.

Например, 2 столбца с коэффициентами 3 и 4 плюс 70 пикселей доступной ширины расширятся на 30 и 40 пикселей соответственно.

Если expand имеет значение false, столбец не будет вносить вклад в общий коэффициент.


void set_table_column_name(column: int, name: String) 🔗

Задает имя столбца таблицы для вспомогательных приложений.


void update_image(key: Variant, mask: BitField[ImageUpdateMask], image: Texture2D, width: int = 0, height: int = 0, color: Color = Color(1, 1, 1, 1), inline_align: InlineAlignment = 5, region: Rect2 = Rect2(0, 0, 0, 0), pad: bool = false, tooltip: String = "", width_in_percent: bool = false, height_in_percent: bool = false) 🔗

Обновляет существующие изображения с ключом key. Обновляются только свойства, указанные битами mask. См. add_image().


Описания свойств темы

Color default_color = Color(1, 1, 1, 1) 🔗

Цвет текста по умолчанию.


Color font_outline_color = Color(0, 0, 0, 1) 🔗

Оттенок контура текста по умолчанию.


Color font_selected_color = Color(0, 0, 0, 0) 🔗

Цвет выделенного текста, используемый, когда selection_enabled равен true. Если равен Color(0, 0, 0, 0), он будет проигнорирован.


Color font_shadow_color = Color(0, 0, 0, 0) 🔗

Цвет тени шрифта.


Color selection_color = Color(0.1, 0.1, 1, 0.8) 🔗

Цвет поля выбора.


Color table_border = Color(0, 0, 0, 0) 🔗

Цвет границы ячейки по умолчанию.


Color table_even_row_bg = Color(0, 0, 0, 0) 🔗

Цвет фона по умолчанию для четных строк.


Color table_odd_row_bg = Color(0, 0, 0, 0) 🔗

Цвет фона по умолчанию для нечетных строк.


int line_separation = 0 🔗

Дополнительный вертикальный интервал между строками (в пикселях), интервал добавляется к спуску строки. Это значение может быть отрицательным.


int outline_size = 0 🔗

Размер контура текста.

Примечание: При использовании шрифта с включенным FontFile.multichannel_signed_distance_field его FontFile.msdf_pixel_range должен быть установлен как минимум в дважды значения outline_size, чтобы контур выглядел правильно. В противном случае контур может оказаться обрезанным раньше, чем предполагалось.


int paragraph_separation = 0 🔗

Дополнительный вертикальный интервал между абзацами (в пикселях). Интервал добавляется после последней строки. Это значение может быть отрицательным.


int shadow_offset_x = 1 🔗

Горизонтальное смещение тени шрифта.


int shadow_offset_y = 1 🔗

Вертикальное смещение тени шрифта.


int shadow_outline_size = 1 🔗

Размер контура тени.


int strikethrough_alpha = 50 🔗

Прозрачность цвета зачеркивания по умолчанию (в процентах). Для зачеркивания с пользовательским цветом этот элемент темы используется только в том случае, если альфа пользовательского цвета равна 0.0 (полностью прозрачный).


int table_h_separation = 3 🔗

Горизонтальное разделение элементов в таблице.


int table_v_separation = 3 🔗

Вертикальное разделение элементов в таблице.


int text_highlight_h_padding = 3 🔗

Горизонтальный отступ вокруг полей, нарисованных тегами [fgcolor] и [bgcolor]. Это не влияет на внешний вид выделения текста. Чтобы избежать риска перекрытия соседних выделений, установите это значение на 0, чтобы отключить отступ.


int text_highlight_v_padding = 3 🔗

Вертикальный отступ вокруг полей, нарисованных тегами [fgcolor] и [bgcolor]. Это не влияет на внешний вид выделения текста. Чтобы избежать риска перекрытия соседних выделений, установите это значение на 0, чтобы отключить отступ.


int underline_alpha = 50 🔗

Прозрачность цвета подчеркивания по умолчанию (в процентах). Для подчеркиваний с пользовательским цветом этот элемент темы используется только в том случае, если альфа пользовательского цвета равна 0.0 (полностью прозрачный).


Font bold_font 🔗

Шрифт, используемый для жирного текста.


Font bold_italics_font 🔗

Шрифт, используемый для жирного курсивного текста.


Font italics_font 🔗

Шрифт, используемый для курсивного текста.


Font mono_font 🔗

Шрифт, используемый для моноширинного текста.


Font normal_font 🔗

Шрифт текста по умолчанию.


int bold_font_size 🔗

Размер шрифта, используемый для жирного текста.


int bold_italics_font_size 🔗

Размер шрифта, используемый для жирного курсивного текста.


int italics_font_size 🔗

Размер шрифта, используемый для курсивного текста.


int mono_font_size 🔗

Размер шрифта, используемый для моноширинного текста.


int normal_font_size 🔗

Размер шрифта текста по умолчанию.


Texture2D horizontal_rule 🔗

Текстура горизонтальной линейки.


StyleBox focus 🔗

Фон, используемый при фокусировке RichTextLabel. Фокус focus StyleBox отображается над базовым StyleBox, поэтому следует использовать частично прозрачный StyleBox, чтобы базовый StyleBox оставался видимым. Для этой цели хорошо подходит StyleBox, представляющий контур или подчеркивание. Чтобы отключить визуальный эффект фокуса, назначьте ресурс StyleBoxEmpty. Обратите внимание, что отключение визуального эффекта фокуса навредит удобству использования навигации с помощью клавиатуры/контроллера, поэтому это не рекомендуется по соображениям доступности.


StyleBox normal 🔗

Обычный фон для RichTextLabel.