LineEdit
Наследует: Control < CanvasItem < Node < Object
Поле ввода для однострочного текста.
Описание
LineEdit предоставляет поле ввода для редактирования одной строки текста.
Когда элемент управления LineEdit сфокусирован с помощью клавиш со стрелками на клавиатуре, он только получит фокус, но не перейдет в режим редактирования.
Чтобы войти в режим редактирования, щелкните элемент управления мышью, см. также keep_editing_on_text_submit.
Чтобы выйти из режима редактирования, нажмите
ui_text_submitилиui_cancel(по умолчанию Escape) действия.Проверьте edit(), unedit(), is_editing() и editing_toggled для получения дополнительной информации.
При вводе текста можно вставлять специальные символы с помощью альтернативных кодов Unicode, OEM или Windows:
Чтобы ввести кодовые точки Unicode, удерживайте Alt и введите кодовую точку на цифровой клавиатуре. Например, чтобы ввести символ
á(U+00E1), удерживайте Alt и введите +E1 на цифровой клавиатуре (начальные нули можно опустить).Чтобы ввести кодовые точки OEM, удерживайте Alt и введите код на цифровой клавиатуре. Например, чтобы ввести символ
á(OEM 160), удерживайте Alt и введите160на цифровой клавиатуре.Чтобы ввести кодовые точки Windows, удерживайте Alt и введите код на цифровой клавиатуре. Например, чтобы ввести символ
á(Windows 0225), удерживайте Alt и введите 0, 2, 2, 5 на цифровой клавиатуре. Начальный ноль здесь не должен быть опущен, так как именно так кодовые точки Windows отличаются от кодовых точек OEM.
Важно:
Фокусировка LineEdit с помощью
ui_focus_next(по умолчанию Tab) илиui_focus_prev(по умолчанию Shift + Tab) или Control.grab_focus() по-прежнему переходит в режим редактирования (для совместимости).
LineEdit содержит множество встроенных сочетаний клавиш, которые всегда доступны (Ctrl здесь соответствует Cmd на macOS):
Ctrl + C: Копировать
Ctrl + X: Вырезать
Ctrl + V или Ctrl + Y: Вставить/"сбросить"
Ctrl + Z: Отменить
Ctrl + ~: Поменять направление ввода.
Ctrl + Shift + Z: Повторить
Ctrl + U: Удалить текст от позиции каретки до начала строки
Ctrl + K: Удалить текст от позиции каретки до конца строки
Ctrl + A: Выделить весь текст
Up Arrow/Down Arrow: Переместить каретку в начало/конец строки
В macOS доступны некоторые дополнительные сочетания клавиш:
Cmd + F: То же, что и Стрелка вправо, переместить каретку на один символ вправо
Cmd + B: То же, что и Стрелка влево, переместить курсор на один символ влево
Cmd + P: То же, что Стрелка вверх, переместить курсор на предыдущую строку
Cmd + N: То же, что Стрелка вниз, переместить курсор на следующую строку
Cmd + D: То же, что Delete, удалить символ справа от курсора
Cmd + H: То же, что Backspace, удалить символ слева от курсора
Cmd + A: То же, что Home, переместить курсор в начало строки
Cmd + E: То же, что End, переместить курсор в конец строки
Cmd + Left Arrow: То же, что Home, переместить курсор в начало строки
Cmd + Right Arrow: То же, что End, переместить курсор в конец строки
Примечание: Перечисленные выше сочетания клавиш для перемещения курсора не зависят от shortcut_keys_enabled.
Свойства
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
focus_mode |
|
|
|
||
|
||
|
||
|
||
|
||
mouse_default_cursor_shape |
|
|
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Методы
void |
|
void |
|
void |
clear() |
void |
|
void |
delete_text(from_column: int, to_column: int) |
void |
deselect() |
void |
|
get_menu() const |
|
get_next_composite_character_column(column: int) const |
|
get_previous_composite_character_column(column: int) const |
|
get_scroll_offset() const |
|
get_selection_from_column() const |
|
get_selection_to_column() const |
|
has_ime_text() const |
|
has_redo() const |
|
has_selection() const |
|
has_undo() const |
|
void |
insert_text_at_caret(text: String) |
is_editing() const |
|
is_menu_visible() const |
|
void |
menu_option(option: int) |
void |
|
void |
|
void |
unedit() |
Свойства темы
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Сигналы
editing_toggled(toggled_on: bool) 🔗
Вызывается, когда LineEdit переключается в режим редактирования или выходит из него.
text_change_rejected(rejected_substring: String) 🔗
Вызывается при добавлении текста, который выходит за пределы max_length. Добавленный текст усекается, чтобы соответствовать max_length, а часть, которая не помещается, передается как аргументrejected_substring.
text_changed(new_text: String) 🔗
Выдается при изменении текста.
text_submitted(new_text: String) 🔗
Вызывается, когда пользователь нажимает действие ui_text_submit (по умолчанию: Enter или Kp Enter), когда фокус находится на LineEdit.
Перечисления
Вырезает (копирует и очищает) выделенный текст.
Копирует выделенный текст.
Вставляет текст буфера обмена поверх выделенного текста (или в позицию курсора).
Непечатаемые экранированные символы автоматически удаляются из буфера обмена ОС с помощью String.strip_escapes().
Стирает весь текст LineEdit.
Выделяет весь текст LineEdit.
Отменяет предыдущее действие.
Отменить последнее отмененное действие.
Идентификатор подменю «Направление написания текста».
Устанавливает унаследованное направление текста.
Устанавливает автоматическое направление текста.
Устанавливает направление текста слева направо.
Устанавливает направление текста справа налево.
Переключает отображение управляющего символа.
Идентификатор подменю «Вставить управляющий символ».
Вставляет символ знака слева направо (LRM).
Вставляет символ с письмом справа налево (RLM).
Вставляет начало символа вставки слева направо (LRE).
Вставляет начало символа вставки справа налево (RLE).
Вставляет начало символа переопределения слева направо (LRO).
Вставляет начало символа переопределения справа налево (RLO).
Вставляет символ форматирования направления поп-арта (PDF).
Вставляет символ арабской буквы (ALM).
Вставляет изолирующий символ слева направо (LRI).
Вставляет изолирующий символ справа налево (RLI).
Вставляет первый сильный изолятный (FSI) символ.
Вставляет символ изоляции направления поп-музыки (PDI).
Вставляет символ объединения нулевой ширины (ZWJ).
Вставляет символ нулевой ширины, не являющийся объединяющим (ZWNJ).
Вставляет символ объединения слов (WJ).
Вставляет символ мягкого дефиса (SHY).
Открывает системный выбор эмодзи и символов.
Представляет размер перечисления MenuItems.
enum VirtualKeyboardType: 🔗
VirtualKeyboardType KEYBOARD_TYPE_DEFAULT = 0
Текстовая виртуальная клавиатура по умолчанию.
VirtualKeyboardType KEYBOARD_TYPE_MULTILINE = 1
Многострочная виртуальная клавиатура.
VirtualKeyboardType KEYBOARD_TYPE_NUMBER = 2
Виртуальная цифровая клавиатура, полезная для ввода ПИН-кода.
VirtualKeyboardType KEYBOARD_TYPE_NUMBER_DECIMAL = 3
Виртуальная цифровая клавиатура, полезная для ввода дробных чисел.
VirtualKeyboardType KEYBOARD_TYPE_PHONE = 4
Виртуальная клавиатура для набора номера телефона.
VirtualKeyboardType KEYBOARD_TYPE_EMAIL_ADDRESS = 5
Виртуальная клавиатура с дополнительными клавишами для облегчения ввода адресов электронной почты.
VirtualKeyboardType KEYBOARD_TYPE_PASSWORD = 6
Виртуальная клавиатура для ввода пароля. На большинстве платформ это должно отключить автозаполнение и автоматическую капитализацию.
Примечание: Это не поддерживается в Web. Вместо этого это ведет себя идентично KEYBOARD_TYPE_DEFAULT.
VirtualKeyboardType KEYBOARD_TYPE_URL = 7
Виртуальная клавиатура с дополнительными клавишами для облегчения ввода URL-адресов.
enum ExpandMode: 🔗
ExpandMode EXPAND_MODE_ORIGINAL_SIZE = 0
Для правой иконки используйте исходный размер.
ExpandMode EXPAND_MODE_FIT_TO_TEXT = 1
Измените размер правой иконки так, чтобы он соответствовал размеру текста.
ExpandMode EXPAND_MODE_FIT_TO_LINE_EDIT = 2
Измените размер правой иконки, чтобы она соответствовала размеру окна LineEdit.
Описания свойств
HorizontalAlignment alignment = 0 🔗
void set_horizontal_alignment(value: HorizontalAlignment)
HorizontalAlignment get_horizontal_alignment()
Горизонтальное выравнивание текста.
bool backspace_deletes_composite_character_enabled = false 🔗
void set_backspace_deletes_composite_character_enabled(value: bool)
bool is_backspace_deletes_composite_character_enabled()
Если true и caret_mid_grapheme в значении false, Возврат удаляет весь составной символ, такой как ❤️🩹, вместо удаления части составного символа.
Если true, курсор мигает.
float caret_blink_interval = 0.65 🔗
Интервал мигания курсора (в секундах).
Положение столбца курсора внутри LineEdit. Если установлено, текст может прокручиваться, чтобы вместить его.
bool caret_force_displayed = false 🔗
Если true, LineEdit всегда будет отображать курсор, даже если редактирование не выполняется или фокус потерян.
bool caret_mid_grapheme = false 🔗
Разрешить перемещение курсора, выбор и удаление отдельных компонентов составного символа.
Примечание: Backspace всегда удаляет отдельные компоненты составного символа.
bool clear_button_enabled = false 🔗
Если true, LineEdit отобразит кнопку очистки, если text не пуст, что можно использовать для быстрой очистки текста.
Если true, при щелчке правой кнопкой мыши появится контекстное меню.
bool deselect_on_focus_loss_enabled = true 🔗
Если true, выделенный текст будет снят с выделения при потере фокуса.
bool drag_and_drop_selection_enabled = true 🔗
Если true, разрешено перетаскивание выделенного текста.
bool draw_control_chars = false 🔗
Если true, отображаются управляющие символы.
Если false, существующий текст не может быть изменен и новый текст не может быть добавлен.
Если true, меню «Эмодзи и символы» включено.
bool expand_to_text_length = false 🔗
Если true, ширина LineEdit увеличится и останется длиннее, чем text. Он не сожмется, если text будет сокращен.
Если true, LineEdit не отображает оформление.
ExpandMode icon_expand_mode = 0 🔗
void set_icon_expand_mode(value: ExpandMode)
ExpandMode get_icon_expand_mode()
Определите поведение масштабирования для right_icon.
bool keep_editing_on_text_submit = false 🔗
Если true, LineEdit не выйдет из режима редактирования, если текст отправлен нажатием действия ui_text_submit (по умолчанию: Enter или Kp Enter).
Код языка, используемый алгоритмами переноса строк и форматирования текста. Если оставить поле пустым, будет использоваться текущая локаль.
Максимальное количество символов, которое можно ввести в LineEdit. Если 0, ограничений нет.
Если задано ограничение, символы, превышающие max_length, обрезаются. Это происходит как с существующим содержимым text при установке максимальной длины, так и с новым текстом, вставленным в LineEdit, включая вставку.
Если какой-либо введённый текст обрезается, выдаётся сигнал text_change_rejected с обрезанной подстрокой в качестве параметра:
text = "Hello world"
max_length = 5
# `text` становится "Hello".
max_length = 10
text += " goodbye"
# `text` становится "Hello good".
# `text_change_rejected` выдается с параметром "bye".
Text = "Hello world";
MaxLength = 5;
// `Text` становится "Hello".
MaxLength = 10;
Text += " goodbye";
// `Text` становится "Hello good".
// `text_change_rejected` выдается с параметром "bye".
bool middle_mouse_paste_enabled = true 🔗
Если false, использование средней кнопки мыши для вставки буфера обмена будет отключено.
Примечание: Этот метод реализован только в Linux.
String placeholder_text = "" 🔗
Текст, отображаемый, когда LineEdit пуст. Это не значение по умолчанию для LineEdit (см. text).
Устанавливает значок, который будет отображаться в правом конце LineEdit, если нет text, или всегда, если clear_button_enabled установлен в false.
float right_icon_scale = 1.0 🔗
Коэффициент масштабирования значка, когда для параметра icon_expand_mode установлено значение EXPAND_MODE_FIT_TO_LINE_EDIT.
Если true, каждый символ заменяется секретным символом (см. secret_character).
String secret_character = "•" 🔗
Символ, используемый для маскировки секретного ввода. В качестве секретного символа можно использовать только один символ. Если он длиннее одного символа, будет использоваться только первый. Если он пустой, вместо него будет использоваться пробел.
bool select_all_on_focus = false 🔗
Если true, LineEdit выделит весь текст, когда получит фокус.
bool selecting_enabled = true 🔗
Если false, невозможно выделить текст с помощью мыши или клавиатуры.
bool shortcut_keys_enabled = true 🔗
Если true, сочетания клавиш для пунктов контекстного меню включены, даже если контекстное меню отключено.
StructuredTextParser structured_text_bidi_override = 0 🔗
void set_structured_text_bidi_override(value: StructuredTextParser)
StructuredTextParser get_structured_text_bidi_override()
Установите переопределение алгоритма BiDi для структурированного текста.
Array structured_text_bidi_override_options = [] 🔗
void set_structured_text_bidi_override_options(value: Array)
Array get_structured_text_bidi_override_options()
Установите дополнительные параметры для переопределения BiDi.
Строковое значение LineEdit.
Примечание: Изменение текста с использованием этого свойства не будет генерировать сигнал text_changed.
TextDirection text_direction = 0 🔗
void set_text_direction(value: TextDirection)
TextDirection get_text_direction()
Направление написания базового текста.
bool virtual_keyboard_enabled = true 🔗
Если true, встроенная виртуальная клавиатура включена на платформах, которые ее поддерживают.
bool virtual_keyboard_show_on_focus = true 🔗
Если true, то собственная виртуальная клавиатура отображается при фокусировке на платформах, которые ее поддерживают.
VirtualKeyboardType virtual_keyboard_type = 0 🔗
void set_virtual_keyboard_type(value: VirtualKeyboardType)
VirtualKeyboardType get_virtual_keyboard_type()
Указывает тип отображаемой виртуальной клавиатуры.
Описания метода
void apply_ime() 🔗
Применяет текст из редактора метода ввода (IME) и закрывает IME, если он открыт.
void cancel_ime() 🔗
Закрывает Редактор метода ввода (IME), если он открыт. Любой текст в IME будет потерян.
void clear() 🔗
Удаляет text LineEdit-s.
void delete_char_at_caret() 🔗
Удаляет один символ в текущей позиции курсора (эквивалентно нажатию Delete).
void delete_text(from_column: int, to_column: int) 🔗
Удаляет часть text, начиная с позиции from_column до to_column. Оба параметра должны быть в пределах длины текста.
void deselect() 🔗
Очищает текущий выбор.
void edit(hide_focus: bool = false) 🔗
Позволяет переходить в режим редактирования независимо от того, находится ли элемент LineEdit в фокусе или нет. Если hide_focus равно true, состояние фокуса не будет отображаться (см. Control.grab_focus()).
См. также keep_editing_on_text_submit.
Возвращает PopupMenu этого LineEdit. По умолчанию это меню отображается при щелчке правой кнопкой мыши по LineEdit.
Вы можете добавлять пользовательские пункты меню или удалять стандартные. Убедитесь, что ваши идентификаторы не конфликтуют со стандартными (см. MenuItems). Например:
func _ready():
var menu = get_menu()
# Удалить все элементы после «Повторить».
menu.item_count = menu.get_item_index(MENU_REDO) + 1
# Добавьте пользовательские элементы.
menu.add_separator()
menu.add_item("Insert Date", MENU_MAX + 1)
# Подключить обратный вызов.
menu.id_pressed.connect(_on_item_pressed)
func _on_item_pressed(id):
if id == MENU_MAX + 1:
insert_text_at_caret(Time.get_date_string_from_system())
public override void _Ready()
{
var menu = GetMenu();
// Удалить все элементы после «Повторить».
menu.ItemCount = menu.GetItemIndex(LineEdit.MenuItems.Redo) + 1;
// Добавьте пользовательские элементы.
menu.AddSeparator();
menu.AddItem("Insert Date", LineEdit.MenuItems.Max + 1);
// Добавить обработчик событий.
menu.IdPressed += OnItemPressed;
}
public void OnItemPressed(int id)
{
if (id == LineEdit.MenuItems.Max + 1)
{
InsertTextAtCaret(Time.GetDateStringFromSystem());
}
}
Предупреждение: Это обязательный внутренний узел, его удаление и освобождение может привести к сбою. Если вы хотите скрыть его или любого из его дочерних элементов, используйте их свойство Window.visible.
int get_next_composite_character_column(column: int) const 🔗
Возвращает правильный столбец в конце составного символа, такого как ❤️🩹 (исправление сердца; Unicode: U+2764 U+FE0F U+200D U+1FA79), который состоит из более чем одной точки кода Unicode, если каретка в начале составного символа. Также возвращает правильный столбец с помощью каретки в средней графеме и для некомпозитных символов.
** Примечание: ** Чтобы проверить в использовании местоположения каретки get_next_composite_character_column(get_caret_column())
int get_previous_composite_character_column(column: int) const 🔗
Возвращает правильный столбец в начале композитного символа, такого как ❤️🩹 (исправление сердца; Unicode: U+2764 U+FE0F U+200D U+1FA79), который состоит из более чем одной точки кода Unicode, если каретка находится в конце составного символа. Также возвращает правильный столбец с помощью каретки в средней графеме и для некомпозитных символов.
** Примечание: ** Чтобы проверить в использовании местоположения каретки get_previous_composite_character_column(get_caret_column())
float get_scroll_offset() const 🔗
Возвращает смещение прокрутки из-за caret_column в виде количества символов.
Возвращает текст внутри выделения.
int get_selection_from_column() const 🔗
Возвращает начальный столбец выбора.
int get_selection_to_column() const 🔗
Возвращает конечный столбец выбора.
Возвращает true, если у пользователя есть текст в редакторе метода ввода (IME).
Возвращает true, если доступно действие «повторить».
Возвращает true, если пользователь выбрал текст.
Возвращает true, если доступно действие «отменить».
void insert_text_at_caret(text: String) 🔗
Вставляет text в каретку. Если полученное значение длиннее, чем max_length, ничего не происходит.
Возвращает, редактируется ли LineEdit.
Возвращает, видимо ли меню. Используйте это вместо get_menu().visible для повышения производительности (чтобы избежать создания меню).
Выполняет заданное действие, определенное в перечислении MenuItems.
void select(from: int = 0, to: int = -1) 🔗
Выбирает символы внутри LineEdit между from и to. По умолчанию from находится в начале, а to — в конце.
text = "Welcome"
select() # Выберите "Welcome".
select(4) # Выберите "ome".
select(2, 5) # Выберите "lco".
Text = "Welcome";
Select(); // Выберите "Welcome".
Select(4); // Выберите "ome".
Select(2, 5); // Выберите "lco".
void select_all() 🔗
Выделяет всю String.
void unedit() 🔗
Позволяет выйти из режима редактирования, сохраняя фокус.
Описания свойств темы
Color caret_color = Color(0.95, 0.95, 0.95, 1) 🔗
Цвет каретки (текстового курсора) LineEdit. Его можно установить на полностью прозрачный цвет, чтобы полностью скрыть каретку.
Color clear_button_color = Color(0.875, 0.875, 0.875, 1) 🔗
Цвет, используемый в качестве оттенка по умолчанию для кнопки очистки.
Color clear_button_color_pressed = Color(1, 1, 1, 1) 🔗
Цвет, используемый для кнопки очистки при ее нажатии.
Color font_color = Color(0.875, 0.875, 0.875, 1) 🔗
Цвет шрифта по умолч.
Color font_outline_color = Color(0, 0, 0, 1) 🔗
Оттенок контура текста LineEdit.
Color font_placeholder_color = Color(0.875, 0.875, 0.875, 0.6) 🔗
Цвет шрифта для placeholder_text.
Color font_selected_color = Color(1, 1, 1, 1) 🔗
Цвет шрифта для выделенного текста (внутри прямоугольника выделения).
Color font_uneditable_color = Color(0.875, 0.875, 0.875, 0.5) 🔗
Цвет шрифта при редактировании отключен.
Color selection_color = Color(0.5, 0.5, 0.5, 1) 🔗
Цвет прямоугольника выделения.
Ширина каретки в пикселях. Большие значения можно использовать для улучшения доступности, обеспечивая легкую видимость каретки или для обеспечения согласованности с большим размером шрифта.
int minimum_character_width = 4 🔗
Минимальное горизонтальное пространство для текста (не считая кнопку очистки и полей содержимого). Это значение измеряется в количестве символов «M» (т.е. это количество символов «M» может быть отображено без прокрутки).
Размер контура текста.
Примечание: При использовании шрифта с включенным FontFile.multichannel_signed_distance_field его FontFile.msdf_pixel_range должен быть установлен как минимум в дважды значения outline_size, чтобы контур выглядел правильно. В противном случае контур может оказаться обрезанным раньше, чем предполагалось.
Шрифт, используемый в тексте.
Размер шрифта текста LineEdit.
Текстура для кнопки очистки. Смотрите clear_button_enabled.
Фон используется, когда LineEdit имеет фокус GUI. Фокус [theme_item StyleBox отображается над базовым StyleBox, поэтому следует использовать частично прозрачный StyleBox, чтобы базовый StyleBox оставался видимым. StyleBox, представляющий контур или подчеркивание, хорошо подходит для этой цели. Чтобы отключить визуальный эффект фокуса, назначьте ресурс StyleBoxEmpty. Обратите внимание, что отключение визуального эффекта фокуса навредит удобству использования навигации с помощью клавиатуры/контроллера, поэтому это не рекомендуется по соображениям доступности.
Фон по умолчанию для LineEdit.
Фон используется, когда LineEdit находится в режиме только для чтения (editable имеет значение false).