LineEdit
继承: Control
< CanvasItem
< Node
< Object
An input field for single-line text.
描述
LineEdit provides an input field for editing a single line of text.
-
When the LineEdit control is focused using the keyboard arrow keys, it will only gain focus and not enter edit mode.
-
To enter edit mode, click on the control with the mouse or press the
ui_text_submit
action (by defaultEnter
orKp Enter
). -
To exit edit mode, press
ui_text_submit
orui_cancel
(by defaultEscape
) actions. -
Check
edit
,unedit
,is_editing
, andediting_toggled
for more information.
Important:
- Focusing the LineEdit with
ui_focus_next
(by defaultTab
) orui_focus_prev
(by defaultShift + Tab
) orControl.grab_focus
still enters edit mode (for compatibility).
LineEdit features many built-in shortcuts that are always available (Ctrl
here maps to Cmd
on macOS):
-
Ctrl + C
: Copy -
Ctrl + X
: Cut -
Ctrl + V
orCtrl + Y
: Paste/"yank" -
Ctrl + Z
: Undo -
Ctrl + ~
: Swap input direction. -
Ctrl + Shift + Z
: Redo -
Ctrl + U
: Delete text from the caret position to the beginning of the line -
Ctrl + K
: Delete text from the caret position to the end of the line -
Ctrl + A
: Select all text -
Up Arrow
/Down Arrow
: Move the caret to the beginning/end of the line
On macOS, some extra keyboard shortcuts are available:
-
Cmd + F
: Same asRight Arrow
, move the caret one character right -
Cmd + B
: Same asLeft Arrow
, move the caret one character left -
Cmd + P
: Same asUp Arrow
, move the caret to the previous line -
Cmd + N
: Same asDown Arrow
, move the caret to the next line -
Cmd + D
: Same asDelete
, delete the character on the right side of caret -
Cmd + H
: Same asBackspace
, delete the character on the left side of the caret -
Cmd + A
: Same asHome
, move the caret to the beginning of the line -
Cmd + E
: Same asEnd
, move the caret to the end of the line -
Cmd + Left Arrow
: Same asHome
, move the caret to the beginning of the line -
Cmd + Right Arrow
: Same asEnd
, move the caret to the end of the line
Note: Caret movement shortcuts listed above are not affected by shortcut_keys_enabled
.
属性
方法
void | apply_ime ( ) |
void | cancel_ime ( ) |
void | clear ( ) |
void | delete_char_at_caret ( ) |
void | delete_text ( from_column: int , to_column: int ) |
void | deselect ( ) |
void | edit ( ) |
PopupMenu | get_menu ( ) const1 |
float | get_scroll_offset ( ) const1 |
String | get_selected_text ( ) |
int | get_selection_from_column ( ) const1 |
int | get_selection_to_column ( ) const1 |
bool | has_ime_text ( ) const1 |
bool | has_redo ( ) const1 |
bool | has_selection ( ) const1 |
bool | has_undo ( ) const1 |
void | insert_text_at_caret ( text: String ) |
bool | is_editing ( ) const1 |
bool | is_menu_visible ( ) const1 |
void | menu_option ( option: int ) |
void | select ( from: int = 0, to: int = -1 ) |
void | select_all ( ) |
void | unedit ( ) |
主题属性
信号
editing_toggled ( toggled_on: bool
)
Emitted when the LineEdit switches in or out of edit mode.
text_change_rejected ( rejected_substring: String
)
Emitted when appending text that overflows the max_length
. The appended text is truncated to fit max_length
, and the part that couldn't fit is passed as the rejected_substring
argument.
text_changed ( new_text: String
)
Emitted when the text changes.
text_submitted ( new_text: String
)
Emitted when the user presses the ui_text_submit
action (by default: Enter
or Kp Enter
) while the LineEdit has focus.
枚举
enum MenuItems:
MenuItems MENU_CUT = 0
Cuts (copies and clears) the selected text.
MenuItems MENU_COPY = 1
Copies the selected text.
MenuItems MENU_PASTE = 2
Pastes the clipboard text over the selected text (or at the caret's position).
Non-printable escape characters are automatically stripped from the OS clipboard via String.strip_escapes
.
MenuItems MENU_CLEAR = 3
Erases the whole LineEdit text.
MenuItems MENU_SELECT_ALL = 4
Selects the whole LineEdit text.
MenuItems MENU_UNDO = 5
Undoes the previous action.
MenuItems MENU_REDO = 6
Reverse the last undo action.
MenuItems MENU_SUBMENU_TEXT_DIR = 7
ID of "Text Writing Direction" submenu.
MenuItems MENU_DIR_INHERITED = 8
Sets text direction to inherited.
MenuItems MENU_DIR_AUTO = 9
Sets text direction to automatic.
MenuItems MENU_DIR_LTR = 10
Sets text direction to left-to-right.
MenuItems MENU_DIR_RTL = 11
Sets text direction to right-to-left.
MenuItems MENU_DISPLAY_UCC = 12
Toggles control character display.
MenuItems MENU_SUBMENU_INSERT_UCC = 13
ID of "Insert Control Character" submenu.
MenuItems MENU_INSERT_LRM = 14
Inserts left-to-right mark (LRM) character.
MenuItems MENU_INSERT_RLM = 15
Inserts right-to-left mark (RLM) character.
MenuItems MENU_INSERT_LRE = 16
Inserts start of left-to-right embedding (LRE) character.
MenuItems MENU_INSERT_RLE = 17
Inserts start of right-to-left embedding (RLE) character.
MenuItems MENU_INSERT_LRO = 18
Inserts start of left-to-right override (LRO) character.
MenuItems MENU_INSERT_RLO = 19
Inserts start of right-to-left override (RLO) character.
MenuItems MENU_INSERT_PDF = 20
Inserts pop direction formatting (PDF) character.
MenuItems MENU_INSERT_ALM = 21
Inserts Arabic letter mark (ALM) character.
MenuItems MENU_INSERT_LRI = 22
Inserts left-to-right isolate (LRI) character.
MenuItems MENU_INSERT_RLI = 23
Inserts right-to-left isolate (RLI) character.
MenuItems MENU_INSERT_FSI = 24
Inserts first strong isolate (FSI) character.
MenuItems MENU_INSERT_PDI = 25
Inserts pop direction isolate (PDI) character.
MenuItems MENU_INSERT_ZWJ = 26
Inserts zero width joiner (ZWJ) character.
MenuItems MENU_INSERT_ZWNJ = 27
Inserts zero width non-joiner (ZWNJ) character.
MenuItems MENU_INSERT_WJ = 28
Inserts word joiner (WJ) character.
MenuItems MENU_INSERT_SHY = 29
Inserts soft hyphen (SHY) character.
MenuItems MENU_MAX = 30
Represents the size of the MenuItems enum.
enum VirtualKeyboardType:
VirtualKeyboardType KEYBOARD_TYPE_DEFAULT = 0
Default text virtual keyboard.
VirtualKeyboardType KEYBOARD_TYPE_MULTILINE = 1
Multiline virtual keyboard.
VirtualKeyboardType KEYBOARD_TYPE_NUMBER = 2
Virtual number keypad, useful for PIN entry.
VirtualKeyboardType KEYBOARD_TYPE_NUMBER_DECIMAL = 3
Virtual number keypad, useful for entering fractional numbers.
VirtualKeyboardType KEYBOARD_TYPE_PHONE = 4
Virtual phone number keypad.
VirtualKeyboardType KEYBOARD_TYPE_EMAIL_ADDRESS = 5
Virtual keyboard with additional keys to assist with typing email addresses.
VirtualKeyboardType KEYBOARD_TYPE_PASSWORD = 6
Virtual keyboard for entering a password. On most platforms, this should disable autocomplete and autocapitalization.
Note: This is not supported on Web. Instead, this behaves identically to KEYBOARD_TYPE_DEFAULT
.
VirtualKeyboardType KEYBOARD_TYPE_URL = 7
Virtual keyboard with additional keys to assist with typing URLs.
属性说明
HorizontalAlignment alignment = 0
void
set_horizontal_alignment ( value: HorizontalAlignment )- HorizontalAlignment get_horizontal_alignment ( )
Text alignment as defined in the HorizontalAlignment enum.
bool
caret_blink = false
If true
, makes the caret blink.
float
caret_blink_interval = 0.65
The interval at which the caret blinks (in seconds).
int
caret_column = 0
The caret's column position inside the LineEdit. When set, the text may scroll to accommodate it.
bool
caret_force_displayed = false
If true
, the LineEdit will always show the caret, even if focus is lost.
bool
caret_mid_grapheme = false
Allow moving caret, selecting and removing the individual composite character components.
Note: Backspace
is always removing individual composite character components.
bool
clear_button_enabled = false
If true
, the LineEdit will show a clear button if text
is not empty, which can be used to clear the text quickly.
bool
context_menu_enabled = true
If true
, the context menu will appear when right-clicked.
bool
deselect_on_focus_loss_enabled = true
If true
, the selected text will be deselected when focus is lost.
bool
drag_and_drop_selection_enabled = true
void
set_drag_and_drop_selection_enabled ( value:bool
)bool
is_drag_and_drop_selection_enabled ( )
If true
, allow drag and drop of selected text.
bool
draw_control_chars = false
If true
, control characters are displayed.
bool
editable = true
If false
, existing text cannot be modified and new text cannot be added.
bool
expand_to_text_length = false
If true
, the LineEdit width will increase to stay longer than the text
. It will not compress if the text
is shortened.
bool
flat = false
If true
, the LineEdit doesn't display decoration.
String
language = ""
Language code used for line-breaking and text shaping algorithms. If left empty, current locale is used instead.
int
max_length = 0
Maximum number of characters that can be entered inside the LineEdit. If 0
, there is no limit.
When a limit is defined, characters that would exceed max_length
are truncated. This happens both for existing text
contents when setting the max length, or for new text inserted in the LineEdit, including pasting.
If any input text is truncated, the text_change_rejected
signal is emitted with the truncated substring as parameter:
text = "Hello world"
max_length = 5
# `text` becomes "Hello".
max_length = 10
text += " goodbye"
# `text` becomes "Hello good".
# `text_change_rejected` is emitted with "bye" as parameter.
Text = "Hello world";
MaxLength = 5;
// `Text` becomes "Hello".
MaxLength = 10;
Text += " goodbye";
// `Text` becomes "Hello good".
// `text_change_rejected` is emitted with "bye" as parameter.
bool
middle_mouse_paste_enabled = true
If false
, using middle mouse button to paste clipboard will be disabled.
Note: This method is only implemented on Linux.
String
placeholder_text = ""
Text shown when the LineEdit is empty. It is not the LineEdit's default value (see text
).
Texture2D
right_icon
Sets the icon that will appear in the right end of the LineEdit if there's no text
, or always, if clear_button_enabled
is set to false
.
bool
secret = false
If true
, every character is replaced with the secret character (see secret_character
).
String
secret_character = "•"
The character to use to mask secret input. Only a single character can be used as the secret character. If it is longer than one character, only the first one will be used. If it is empty, a space will be used instead.
bool
select_all_on_focus = false
If true
, the LineEdit will select the whole text when it gains focus.
bool
selecting_enabled = true
If false
, it's impossible to select the text using mouse nor keyboard.
bool
shortcut_keys_enabled = true
If true
, shortcut keys for context menu items are enabled, even if the context menu is disabled.
StructuredTextParser structured_text_bidi_override = 0
void
set_structured_text_bidi_override ( value: StructuredTextParser )- StructuredTextParser get_structured_text_bidi_override ( )
Set BiDi algorithm override for the structured text.
Array
structured_text_bidi_override_options = []
void
set_structured_text_bidi_override_options ( value:Array
)Array
get_structured_text_bidi_override_options ( )
Set additional options for BiDi override.
String
text = ""
String value of the LineEdit.
Note: Changing text using this property won't emit the text_changed
signal.
TextDirection text_direction = 0
void
set_text_direction ( value: TextDirection )- TextDirection get_text_direction ( )
Base text writing direction.
bool
virtual_keyboard_enabled = true
If true
, the native virtual keyboard is shown when focused on platforms that support it.
VirtualKeyboardType virtual_keyboard_type = 0
void
set_virtual_keyboard_type ( value: VirtualKeyboardType )- VirtualKeyboardType get_virtual_keyboard_type ( )
Specifies the type of virtual keyboard to show.
方法说明
void
apply_ime ( )
Applies text from the Input Method Editor (IME) and closes the IME if it is open.
void
cancel_ime ( )
Closes the Input Method Editor (IME) if it is open. Any text in the IME will be lost.
void
clear ( )
Erases the LineEdit's text
.
void
delete_char_at_caret ( )
Deletes one character at the caret's current position (equivalent to pressing Delete
).
void
delete_text ( from_column: int
, to_column: int
)
Deletes a section of the text
going from position from_column
to to_column
. Both parameters should be within the text's length.
void
deselect ( )
Clears the current selection.
void
edit ( )
Allows entering edit mode whether the LineEdit is focused or not.
Use Callable.call_deferred
if you want to enter edit mode on text_submitted
.
Returns the PopupMenu
of this LineEdit. By default, this menu is displayed when right-clicking on the LineEdit.
You can add custom menu items or remove standard ones. Make sure your IDs don't conflict with the standard ones (see MenuItems). For example:
func _ready():
var menu = get_menu()
# Remove all items after "Redo".
menu.item_count = menu.get_item_index(MENU_REDO) + 1
# Add custom items.
menu.add_separator()
menu.add_item("Insert Date", MENU_MAX + 1)
# Connect callback.
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();
// Remove all items after "Redo".
menu.ItemCount = menu.GetItemIndex(LineEdit.MenuItems.Redo) + 1;
// Add custom items.
menu.AddSeparator();
menu.AddItem("Insert Date", LineEdit.MenuItems.Max + 1);
// Add event handler.
menu.IdPressed += OnItemPressed;
}
public void OnItemPressed(int id)
{
if (id == LineEdit.MenuItems.Max + 1)
{
InsertTextAtCaret(Time.GetDateStringFromSystem());
}
}
Warning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their Window.visible
property.
float
get_scroll_offset ( ) const1
Returns the scroll offset due to caret_column
, as a number of characters.
String
get_selected_text ( )
Returns the text inside the selection.
int
get_selection_from_column ( ) const1
Returns the selection begin column.
int
get_selection_to_column ( ) const1
Returns the selection end column.
Returns true
if the user has text in the Input Method Editor (IME).
Returns true
if a "redo" action is available.
Returns true
if the user has selected text.
Returns true
if an "undo" action is available.
void
insert_text_at_caret ( text: String
)
Inserts text
at the caret. If the resulting value is longer than max_length
, nothing happens.
Returns whether the LineEdit is being edited.
bool
is_menu_visible ( ) const1
Returns whether the menu is visible. Use this instead of get_menu().visible
to improve performance (so the creation of the menu is avoided).
void
menu_option ( option: int
)
Executes a given action as defined in the MenuItems enum.
void
select ( from: int
= 0, to: int
= -1 )
Selects characters inside LineEdit between from
and to
. By default, from
is at the beginning and to
at the end.
text = "Welcome"
select() # Will select "Welcome".
select(4) # Will select "ome".
select(2, 5) # Will select "lco".
Text = "Welcome";
Select(); // Will select "Welcome".
Select(4); // Will select "ome".
Select(2, 5); // Will select "lco".
void
select_all ( )
Selects the whole String
.
void
unedit ( )
Allows exiting edit mode while preserving focus.
主题属性说明
Color
caret_color = Color(0.95, 0.95, 0.95, 1)
Color of the LineEdit's caret (text cursor). This can be set to a fully transparent color to hide the caret entirely.
Color
clear_button_color = Color(0.875, 0.875, 0.875, 1)
Color used as default tint for the clear button.
Color
clear_button_color_pressed = Color(1, 1, 1, 1)
Color used for the clear button when it's pressed.
Color
font_color = Color(0.875, 0.875, 0.875, 1)
Default font color.
Color
font_outline_color = Color(0, 0, 0, 1)
The tint of text outline of the LineEdit.
Color
font_placeholder_color = Color(0.875, 0.875, 0.875, 0.6)
Font color for placeholder_text
.
Color
font_selected_color = Color(1, 1, 1, 1)
Font color for selected text (inside the selection rectangle).
Color
font_uneditable_color = Color(0.875, 0.875, 0.875, 0.5)
Font color when editing is disabled.
Color
selection_color = Color(0.5, 0.5, 0.5, 1)
Color of the selection rectangle.
int
caret_width = 1
The caret's width in pixels. Greater values can be used to improve accessibility by ensuring the caret is easily visible, or to ensure consistency with a large font size.
int
minimum_character_width = 4
Minimum horizontal space for the text (not counting the clear button and content margins). This value is measured in count of 'M' characters (i.e. this number of 'M' characters can be displayed without scrolling).
int
outline_size = 0
The size of the text outline.
Note: If using a font with FontFile.multichannel_signed_distance_field
enabled, its FontFile.msdf_pixel_range
must be set to at least twice the value of outline_size
for outline rendering to look correct. Otherwise, the outline may appear to be cut off earlier than intended.
Font
font
Font used for the text.
int
font_size
Font size of the LineEdit's text.
Texture2D
clear
Texture for the clear button. See clear_button_enabled
.
StyleBox
focus
Background used when LineEdit has GUI focus. The focus
StyleBox
is displayed over the base StyleBox
, so a partially transparent StyleBox
should be used to ensure the base StyleBox
remains visible. A StyleBox
that represents an outline or an underline works well for this purpose. To disable the focus visual effect, assign a StyleBoxEmpty
resource. Note that disabling the focus visual effect will harm keyboard/controller navigation usability, so this is not recommended for accessibility reasons.
StyleBox
normal
Default background for the LineEdit.
StyleBox
read_only
Background used when LineEdit is in read-only mode (editable
is set to false
).
本方法通常需要用户覆盖才能生效。
本方法无副作用,不会修改该实例的任何成员变量。
本方法除了能接受在此处描述的参数外,还能够继续接受任意数量的参数。
本方法用于构造某个类型。
调用本方法无需实例,可直接使用类名进行调用。
本方法描述的是使用本类型作为左操作数的有效运算符。
这个值是由下列位标志构成位掩码的整数。
无返回值。