LineEdit

继承: Control < Item < Object

单行文本的输入字段。

描述

LineEdit提供用于编辑单行文本的输入字段。

-当LineEdit控件使用键盘箭头键聚焦时,它只会获得焦点而不会进入编辑模式。

-要进入编辑模式,请用鼠标单击控件,另见keep_editing_on_text_submit

-要退出编辑模式,按ui_text_submitui_cancel(默认为Escape)操作。

-检查edit()unedit()is_editing()editing_toggled以获取更多信息。

重要:

-将LineEditui_focus_next(默认情况下Tab)或ui_focus_prev(默认情况下Shift+Tab)或Control.grab_focus()聚焦仍然进入编辑模式(为了兼容性)。

LineEdit具有许多始终可用的内置快捷方式(此处的Ctrl映射到macOS上的Cmd):

-Ctrl+C:复制

-Ctrl+X:剪切

-Ctrl+VCtrl+Y:粘贴/“猛拉”

-Ctrl+Z:撤消

-Ctrl+~:交换输入方向。

-Ctrl+Shift+Z:重做

-Ctrl+U:从插入符号位置到行首删除文本

-Ctrl+K:从插入符号位置到行尾删除文本

-Ctrl+A:选择所有文本

-向上箭头/向下箭头:将插入符号移动到行首/行尾

在macOS上,可以使用一些额外的键盘快捷键:

-Cmd+F:与右箭头相同,将插入符号向右移动一个字符

-Cmd+B:与左箭头相同,将插入符号向左移动一个字符

-Cmd+P:与向上箭头相同,将插入符号移动到上一行

-Cmd+N:与向下箭头相同,将插入符号移动到下一行

-Cmd+D:与相同删除,删除插入符号右侧的字符

-Cmd+H:与Backspace相同,删除插入符号左侧的字符

-Cmd+A:与Home相同,将插入符号移动到行首

-Cmd+E:与End相同,将插入符号移动到行尾

-Cmd+左箭头:与Home相同,将插入符号移动到行首

-Cmd+右箭头:与End相同,将插入符号移动到行尾

注意:上面列出的卡尔特移动快捷方式不受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() const

float

get_scroll_offset() const

String

get_selected_text()

int

get_selection_from_column() const

int

get_selection_to_column() const

bool

has_ime_text() const

bool

has_redo() const

bool

has_selection() const

bool

has_undo() const

void

insert_text_at_caret(text: String)

bool

is_editing() const

bool

is_menu_visible() const

void

menu_option(option: int)

void

select(from: int = 0, to: int = -1)

void

select_all()

void

unedit()

主题属性

Color

caret_color

Color(0.95, 0.95, 0.95, 1)

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)

Color

font_placeholder_color

Color(0.875, 0.875, 0.875, 0.6)

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

caret_width

1

int

minimum_character_width

4

int

outline_size

0

Font

font

int

font_size

Texture2D

clear

StyleBox

focus

StyleBox

normal

StyleBox

read_only


信号

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

当用户在LineEdit有焦点时按下ui_text_submit操作(默认情况下:EnterKp Enter)时发出。


枚举

enum MenuItems: 🔗

MenuItems MENU_CUT = 0

剪切(复制并清除)选定的文本。

MenuItems MENU_COPY = 1

复制选定的文本。

MenuItems MENU_PASTE = 2

将剪贴板文本粘贴到选定文本上(或插入符号的位置)。

不可打印的转义字符会通过String.strip_escapes()自动从操作系统剪贴板中删除。

MenuItems MENU_CLEAR = 3

擦除整个LineEdit文本。

MenuItems MENU_SELECT_ALL = 4

选择整个LineEdit文本。

MenuItems MENU_UNDO = 5

撤消上一个操作。

MenuItems MENU_REDO = 6

反转最后一个撤消操作。

MenuItems MENU_SUBMENU_TEXT_DIR = 7

“文本写作方向”子菜单的ID。

MenuItems MENU_DIR_INHERITED = 8

将文本方向设置为继承。

MenuItems MENU_DIR_AUTO = 9

将文本方向设置为自动。

MenuItems MENU_DIR_LTR = 10

将文本方向设置为从左到右。

MenuItems MENU_DIR_RTL = 11

将文本方向设置为从右到左。

MenuItems MENU_DISPLAY_UCC = 12

切换控制字符显示。

MenuItems MENU_SUBMENU_INSERT_UCC = 13

“插入控制字符”子菜单的ID。

MenuItems MENU_INSERT_LRM = 14

插入从左到右的标记(LRM)字符。

MenuItems MENU_INSERT_RLM = 15

插入从右到左的标记(RLM)字符。

MenuItems MENU_INSERT_LRE = 16

插入从左到右嵌入(LRE)字符的开头。

MenuItems MENU_INSERT_RLE = 17

插入从右到左嵌入(RLE)字符的开头。

MenuItems MENU_INSERT_LRO = 18

插入从左到右覆盖(LRO)字符的开头。

MenuItems MENU_INSERT_RLO = 19

插入从右到左覆盖(RLO)字符的开头。

MenuItems MENU_INSERT_PDF = 20

插入弹出方向格式(PDF)字符。

MenuItems MENU_INSERT_ALM = 21

插入阿拉伯字母标记(ALM)字符。

MenuItems MENU_INSERT_LRI = 22

插入从左到右的隔离(LRI)字符。

MenuItems MENU_INSERT_RLI = 23

插入从右到左的隔离(RLI)字符。

MenuItems MENU_INSERT_FSI = 24

插入第一个强隔离(FSI)字符。

MenuItems MENU_INSERT_PDI = 25

插入弹出方向隔离(PDI)字符。

MenuItems MENU_INSERT_ZWJ = 26

插入零宽度连接器(ZWJ)字符。

MenuItems MENU_INSERT_ZWNJ = 27

插入零宽度非连接器(ZWNJ)字符。

MenuItems MENU_INSERT_WJ = 28

插入单词连接器(WJ)字符。

MenuItems MENU_INSERT_SHY = 29

插入软连字符(SHY)字符。

MenuItems MENU_EMOJI_AND_SYMBOL = 30

打开系统表情符号和符号选择器。

MenuItems MENU_MAX = 31

表示MenuItems枚举的大小。


enum VirtualKeyboardType: 🔗

VirtualKeyboardType KEYBOARD_TYPE_DEFAULT = 0

默认文本虚拟键盘。

VirtualKeyboardType KEYBOARD_TYPE_MULTILINE = 1

多行虚拟键盘。

VirtualKeyboardType KEYBOARD_TYPE_NUMBER = 2

虚拟数字键盘,对PIN输入很有用。

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。


属性说明

HorizontalAlignment alignment = 0 🔗

HorizontalAlignment枚举中定义的文本对齐方式。


  • void set_caret_blink_enabled(value: bool)

  • bool is_caret_blink_enabled()

如果true,则使插入符号闪烁。


  • void set_caret_blink_interval(value: float)

  • float get_caret_blink_interval()

插入符号闪烁的时间间隔(以秒为单位)。


int caret_column = 0 🔗

  • void set_caret_column(value: int)

  • int get_caret_column()

插入符号在LineEdit中的列位置。设置后,文本可以滚动以适应它。


bool caret_force_displayed = false 🔗

  • void set_caret_force_displayed(value: bool)

  • bool is_caret_force_displayed()

如果true,则LineEdit将始终显示插入符号,即使焦点丢失。


bool caret_mid_grapheme = false 🔗

  • void set_caret_mid_grapheme_enabled(value: bool)

  • bool is_caret_mid_grapheme_enabled()

允许移动插入符号,选择和删除单个复合字符组件。

注意:Backspace始终删除单个复合字符组件。


bool clear_button_enabled = false 🔗

  • void set_clear_button_enabled(value: bool)

  • bool is_clear_button_enabled()

如果true,如果text不为空,LineEdit会显示一个清除按钮,可以用来快速清除文本。


bool context_menu_enabled = true 🔗

  • void set_context_menu_enabled(value: bool)

  • bool is_context_menu_enabled()

如果true,右键单击时会出现上下文菜单。


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 draw_control_chars = false 🔗

  • void set_draw_control_chars(value: bool)

  • bool get_draw_control_chars()

如果true,则显示控制字符。


bool editable = true 🔗

  • void set_editable(value: bool)

  • bool is_editable()

如果false,则无法修改现有文本并且无法添加新文本。


bool emoji_menu_enabled = true 🔗

  • void set_emoji_menu_enabled(value: bool)

  • bool is_emoji_menu_enabled()

如果true,则启用“表情符号和符号”菜单。


bool expand_to_text_length = false 🔗

  • void set_expand_to_text_length_enabled(value: bool)

  • bool is_expand_to_text_length_enabled()

如果true,则LineEdit宽度将增加以保持比text更长的时间。如果text缩短,它将压缩。


bool flat = false 🔗

  • void set_flat(value: bool)

  • bool is_flat()

如果true,则LineEdit不显示装饰。


bool keep_editing_on_text_submit = false 🔗

  • void set_keep_editing_on_text_submit(value: bool)

  • bool is_editing_kept_on_text_submit()

如果true,则LineEdit在按ui_text_submit操作提交文本时不会退出编辑模式(默认情况下:EnterKp Enter)。


String language = "" 🔗

用于换行和文本整形算法的语言代码。如果留空,则使用当前语言环境。


int max_length = 0 🔗

  • void set_max_length(value: int)

  • int get_max_length()

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”作为参数发出。

bool middle_mouse_paste_enabled = true 🔗

  • void set_middle_mouse_paste_enabled(value: bool)

  • bool is_middle_mouse_paste_enabled()

如果false,使用鼠标中键粘贴剪贴板将被禁用。

注意:此方法仅在Linux实现。


String placeholder_text = "" 🔗

  • void set_placeholder(value: String)

  • String get_placeholder()

LineEdit为空时显示的文本。它是而不是LineEdit的默认值(参见text)。


Texture2D right_icon 🔗

如果没有text,则设置将出现在LineEdit右端的图标,或者如果clear_button_enabled设置为false,则始终设置该图标。


bool secret = false 🔗

  • void set_secret(value: bool)

  • bool is_secret()

如果true,则每个字符都替换为秘密字符(参见secret_character)。


String secret_character = "•" 🔗

  • void set_secret_character(value: String)

  • String get_secret_character()

用于屏蔽秘密输入的字符。只能使用单个字符作为秘密字符。如果它比一个字符长,则仅使用第一个字符。如果为空,则使用空格代替。


bool select_all_on_focus = false 🔗

  • void set_select_all_on_focus(value: bool)

  • bool is_select_all_on_focus()

如果true,则LineEdit将在获得焦点时选择整个文本。


bool selecting_enabled = true 🔗

  • void set_selecting_enabled(value: bool)

  • bool is_selecting_enabled()

如果false,则无法使用鼠标或键盘选择文本。


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覆盖设置附加选项。


String text = "" 🔗

LineEdit的字符串值。

注意:使用此属性更改文本不会发出text_changed信号。


TextDirection text_direction = 0 🔗

基本文本写作方向。


bool virtual_keyboard_enabled = true 🔗

  • void set_virtual_keyboard_enabled(value: bool)

  • bool is_virtual_keyboard_enabled()

如果true,则在关注支持它的平台时显示本机虚拟键盘。


VirtualKeyboardType virtual_keyboard_type = 0 🔗

指定要显示的虚拟键盘类型。


方法说明

void apply_ime() 🔗

应用来自输入法编辑器(IME)的文本,并在IME打开时关闭它。


void cancel_ime() 🔗

关闭输入法编辑器(IME)(如果它已打开)。IME中的任何文本都将丢失。


void clear() 🔗

擦除LineEdittext


void delete_char_at_caret() 🔗

删除插入符号当前位置的一个字符(相当于按Delete)。


void delete_text(from_column: int, to_column: int) 🔗

删除从位置from_columnto_columntext部分。两个参数都应在文本长度内。


void deselect() 🔗

清除当前选择。


void edit() 🔗

无论LineEdit是否聚焦,都允许进入编辑模式。

另见keep_editing_on_text_submit


PopupMenu get_menu() const 🔗

返回此LineEditPopupMenu。默认情况下,右键单击LineEdit时会显示此菜单。

您可以添加自定义菜单项或删除标准菜单项。确保您的ID与标准ID不冲突(请参阅MenuItems)。例如:

func iStart() -> void:
    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())

警告: 这是一个必需的内部节点,删除和释放它可能会导致崩溃。如果您想隐藏它或其任何子节点,请使用它们的Window.visible属性。


float get_scroll_offset() const 🔗

以字符数形式返回caret_column引起的滚动偏移量。


String get_selected_text() 🔗

返回所选内容内的文本。


int get_selection_from_column() const 🔗

返回选择开始列。


int get_selection_to_column() const 🔗

返回选择结束列。


bool has_ime_text() const 🔗

如果用户在输入法编辑器(IME)中有文本,则返回true


bool has_redo() const 🔗

如果“重做”操作可用,则返回true


bool has_selection() const 🔗

如果用户选择了文本,则返回true


bool has_undo() const 🔗

如果“撤消”操作可用,则返回true


void insert_text_at_caret(text: String) 🔗

在插入符号处插入text。如果结果值长于max_length,则不会发生任何事情。


bool is_editing() const 🔗

返回是否正在编辑LineEdit


bool is_menu_visible() const 🔗

返回菜单是否可见。使用this而不是get_menu()。可见来提高性能(因此避免创建菜单)。


void menu_option(option: int) 🔗

执行MenuItems枚举中定义的给定操作。


void select(from: int = 0, to: int = -1) 🔗

LineEdit 中选择 fromto 之间的字符。默认情况下,from 位于开始位置,to 位于结束位置。

text = "Welcome"
select() # 将选择“欢迎”。
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 caret_width = 1 🔗

插入符号的宽度(以像素为单位)。更大的值可用于通过确保插入符号易于可见来提高可访问性,或确保与大字体大小的一致性。


int minimum_character_width = 4 🔗

文本的最小水平空间(不包括清除按钮和内容边距)。该值以“M”字符的数量来衡量(即无需滚动即可显示此数量的“M”字符)。


int outline_size = 0 🔗

文本大纲的大小。

注意:如果使用启用了FontFile.multichannel_signed_distance_field的字体,则其FontFile.msdf_pixel_range必须设置为至少两倍outline_size的值才能使轮廓渲染看起来正确。否则,轮廓可能会比预期的更早被切断。


Font font 🔗

用于文本的字体。


int font_size 🔗

LineEdit文本的字体大小。


Texture2D clear 🔗

清除按钮的纹理。参见clear_button_enabled


StyleBox focus 🔗

LineEdit具有GUI焦点时使用的背景。focusStyleBox显示在*底座StyleBox之上,因此应使用部分透明的StyleBox来确保底座StyleBox保持可见。表示轮廓或下划线的StyleBox可以很好地用于此目的。要禁用焦点视觉效果,请分配StyleBoxEmpty资源。请注意,禁用焦点视觉效果会损害键盘/控制器导航可用性,因此出于可访问性原因不建议这样做。


StyleBox normal 🔗

LineEdit的默认背景。


StyleBox read_only 🔗

LineEdit处于只读模式时使用的背景(editable设置为false)。