Control
Hereda: CanvasItem < Node < Object
Heredado por: BaseButton, ColorRect, Container, GraphEdit, ItemList, Label, LineEdit, MenuBar, NinePatchRect, Panel, Range, ReferenceRect, RichTextLabel, Separator, TabBar, TextEdit, TextureRect, Tree, VideoStreamPlayer
Base class for all GUI controls. Adapts its position and size based on its parent control.
Descripción
Base class for all UI-related nodes. Control features a bounding rectangle that defines its extents, an anchor position relative to its parent control or the current viewport, and offsets relative to the anchor. The offsets update automatically when the node, any of its parents, or the screen size change.
For more information on Godot's UI system, anchors, offsets, and containers, see the related tutorials in the manual. To build flexible UIs, you'll need a mix of UI elements that inherit from Control and Container nodes.
Note: Since both Node2D and Control inherit from CanvasItem, they share several concepts from the class such as the CanvasItem.z_index and CanvasItem.visible properties.
User Interface nodes and input
Godot propagates input events via viewports. Each Viewport is responsible for propagating InputEvents to their child nodes. As the SceneTree.root is a Window, this already happens automatically for all UI elements in your game.
Input events are propagated through the SceneTree from the root node to all child nodes by calling Node._input(). For UI elements specifically, it makes more sense to override the virtual method _gui_input(), which filters out unrelated input events, such as by checking z-order, mouse_filter, focus, or if the event was inside of the control's bounding box.
Call accept_event() so no other node receives the event. Once you accept an input, it becomes handled so Node._unhandled_input() will not process it.
Only one Control node can be in focus. Only the node in focus will receive events. To get the focus, call grab_focus(). Control nodes lose focus when another node grabs it, or if you hide the node in focus.
Sets mouse_filter to MOUSE_FILTER_IGNORE to tell a Control node to ignore mouse or touch events. You'll need it if you place an icon on top of a button.
Theme resources change the control's appearance. The theme of a Control node affects all of its direct and indirect children (as long as a chain of controls is uninterrupted). To override some of the theme items, call one of the add_theme_*_override methods, like add_theme_font_override(). You can also override theme items in the Inspector.
Note: Theme items are not Object properties. This means you can't access their values using Object.get() and Object.set(). Instead, use the get_theme_* and add_theme_*_override methods provided by this class.
Tutoriales
Propiedades
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
physics_interpolation_mode |
|
|
|
||
|
||
|
||
|
||
|
||
BitField[SizeFlags] |
|
|
|
||
BitField[SizeFlags] |
|
|
|
||
|
||
|
Métodos
Señales
focus_entered() 🔗
Emitida cuando el nodo obtiene el foco.
focus_exited() 🔗
Emitida cuando el nodo pierde el foco.
gui_input(event: InputEvent) 🔗
Emitida cuando el nodo recibe un InputEvent.
minimum_size_changed() 🔗
Emitida cuando el tamaño mínimo del nodo cambia.
mouse_entered() 🔗
Emitted when the mouse cursor enters the control's (or any child control's) visible area, that is not occluded behind other Controls or Windows, provided its mouse_filter lets the event reach it and regardless if it's currently focused or not.
Note: CanvasItem.z_index doesn't affect, which Control receives the signal.
mouse_exited() 🔗
Emitted when the mouse cursor leaves the control's (and all child control's) visible area, that is not occluded behind other Controls or Windows, provided its mouse_filter lets the event reach it and regardless if it's currently focused or not.
Note: CanvasItem.z_index doesn't affect, which Control receives the signal.
Note: If you want to check whether the mouse truly left the area, ignoring any top nodes, you can use code like this:
func _on_mouse_exited():
if not Rect2(Vector2(), size).has_point(get_local_mouse_position()):
# Not hovering over area.
resized() 🔗
Emitida cuando el control cambia de tamaño.
size_flags_changed() 🔗
Emitida cuando una de las flags de tamaño cambia. Véase size_flags_horizontal y size_flags_vertical.
theme_changed() 🔗
Emitida cuando se envía la notificación NOTIFICATION_THEME_CHANGED.
Enumeraciones
enum FocusMode: 🔗
FocusMode FOCUS_NONE = 0
El nodo no puede captar el foco. Usar con focus_mode.
FocusMode FOCUS_CLICK = 1
El nodo sólo puede captar el foco en los clics del ratón. Usar con focus_mode.
FocusMode FOCUS_ALL = 2
El nodo puede tomar el foco al hacer clic con el ratón, usando las flechas y las teclas Tab en el teclado, o usando los botones D-pad en un gamepad. Usar con focus_mode.
FocusMode FOCUS_ACCESSIBILITY = 3
El nodo solo puede captar el foco cuando el lector de pantalla está activo. Usar con focus_mode.
enum FocusBehaviorRecursive: 🔗
FocusBehaviorRecursive FOCUS_BEHAVIOR_INHERITED = 0
Hereda el focus_behavior_recursive del control padre. Si no hay un control padre, es lo mismo que FOCUS_BEHAVIOR_ENABLED.
FocusBehaviorRecursive FOCUS_BEHAVIOR_DISABLED = 1
Evita que el control reciba el foco. get_focus_mode_with_override() devolverá FOCUS_NONE.
FocusBehaviorRecursive FOCUS_BEHAVIOR_ENABLED = 2
Permite que el control reciba el foco, dependiendo del focus_mode. Esto se puede usar para ignorar el focus_behavior_recursive del padre. get_focus_mode_with_override() devolverá el focus_mode.
enum MouseBehaviorRecursive: 🔗
MouseBehaviorRecursive MOUSE_BEHAVIOR_INHERITED = 0
Hereda el mouse_behavior_recursive del control padre. Si no hay un control padre, es lo mismo que MOUSE_BEHAVIOR_ENABLED.
MouseBehaviorRecursive MOUSE_BEHAVIOR_DISABLED = 1
Evita que el control reciba entradas del ratón. get_mouse_filter_with_override() devolverá MOUSE_FILTER_IGNORE.
MouseBehaviorRecursive MOUSE_BEHAVIOR_ENABLED = 2
Permite que el control reciba entradas del ratón, dependiendo del mouse_filter. Esto puede usarse para ignorar el mouse_behavior_recursive del padre. get_mouse_filter_with_override() devolverá el mouse_filter.
enum CursorShape: 🔗
CursorShape CURSOR_ARROW = 0
Mostrar el cursor del ratón de la flecha del sistema cuando el usuario pasa por encima del nodo. Usar con mouse_default_cursor_shape.
CursorShape CURSOR_IBEAM = 1
Muestra el cursor del ratón del sistema I-beam cuando el usuario pasa por encima del nodo. El puntero del I-beam tiene una forma similar a la de la "I". Le dice al usuario que puede resaltar o insertar texto.
CursorShape CURSOR_POINTING_HAND = 2
Muestra el cursor del ratón de la mano del sistema cuando el usuario pasa por encima del nodo.
CursorShape CURSOR_CROSS = 3
Muestra el cursor cruzado del ratón del sistema cuando el usuario pasa por encima del nodo.
CursorShape CURSOR_WAIT = 4
Muestra el cursor del ratón de espera del sistema cuando el usuario pasa por encima del nodo. A menudo un reloj de arena.
CursorShape CURSOR_BUSY = 5
Muestra el cursor del ratón ocupado del sistema cuando el usuario pasa por encima del nodo. A menudo una flecha con un pequeño reloj de arena.
CursorShape CURSOR_DRAG = 6
Muestra el cursor del ratón de arrastre del sistema, a menudo un puño cerrado o un símbolo de cruz, cuando el usuario pasa por encima del nodo. Le dice al usuario que está arrastrando un elemento, como un nodo en el Dock de la escena.
CursorShape CURSOR_CAN_DROP = 7
Muestra el cursor del ratón del sistema cuando el usuario pasa por encima del nodo. Puede ser una mano abierta. Le dice al usuario que puede soltar un elemento que está agarrando, como un nodo en el Dock de la escena.
CursorShape CURSOR_FORBIDDEN = 8
Muestra el cursor del ratón prohibido del sistema cuando el usuario pasa por encima del nodo. A menudo un círculo cruzado.
CursorShape CURSOR_VSIZE = 9
Muestra el cursor del ratón de tamaño vertical del sistema cuando el usuario pasa por encima del nodo. Una flecha vertical de doble punta. Le dice al usuario que puede cambiar el tamaño de la ventana o del panel verticalmente.
CursorShape CURSOR_HSIZE = 10
Muestra el cursor del ratón de tamaño horizontal del sistema cuando el usuario pasa por encima del nodo. Una flecha horizontal de doble punta. Le dice al usuario que puede cambiar el tamaño de la ventana o del panel horizontalmente.
CursorShape CURSOR_BDIAGSIZE = 11
Muestra el cursor de cambio de tamaño de la ventana del sistema del ratón cuando el usuario pasa por encima del nodo. El cursor es una flecha de doble punta que va de abajo a la izquierda a arriba a la derecha. Le dice al usuario que puede cambiar el tamaño de la ventana o del panel tanto horizontal como verticalmente.
CursorShape CURSOR_FDIAGSIZE = 12
Muestra el cursor del cambio de tamaño de la ventana del sistema cuando el usuario pasa por encima del nodo. El cursor es una flecha de doble punta que va de arriba a la izquierda a abajo a la derecha, lo opuesto a CURSOR_BDIAGSIZE. Le dice al usuario que puede cambiar el tamaño de la ventana o del panel tanto horizontal como verticalmente.
CursorShape CURSOR_MOVE = 13
Muestra el cursor del ratón del sistema cuando el usuario pasa por encima del nodo. Muestra 2 flechas de doble cabeza en un ángulo de 90 grados. Le dice al usuario que puede mover libremente un elemento de la interfaz de usuario.
CursorShape CURSOR_VSPLIT = 14
Muestra el cursor del ratón dividido verticalmente del sistema cuando el usuario pasa por encima del nodo. En Windows, es lo mismo que CURSOR_VSIZE.
CursorShape CURSOR_HSPLIT = 15
Muestra el cursor del ratón dividido horizontalmente del sistema cuando el usuario pasa por encima del nodo. En Windows, es lo mismo que CURSOR_HSIZE.
CursorShape CURSOR_HELP = 16
Mostrar el cursor del ratón de ayuda del sistema cuando el usuario pasa por encima del nodo, un signo de interrogación.
enum LayoutPreset: 🔗
LayoutPreset PRESET_TOP_LEFT = 0
Pone las cuatro anclas en la parte superior izquierda de los límites del control parental. Usar con set_anchors_preset().
LayoutPreset PRESET_TOP_RIGHT = 1
Pone las cuatro anclas en la parte superior derecha de los límites del control parental. Usar con set_anchors_preset().
LayoutPreset PRESET_BOTTOM_LEFT = 2
Pone las cuatro anclas en la parte inferior izquierda de los límites del control parental. Usar con set_anchors_preset().
LayoutPreset PRESET_BOTTOM_RIGHT = 3
Pone las cuatro anclas en la parte inferior derecha de los límites del control parental. Usar con set_anchors_preset().
LayoutPreset PRESET_CENTER_LEFT = 4
Pone las 4 anclas en el centro del borde izquierdo de los límites del control parental. Usar con set_anchors_preset().
LayoutPreset PRESET_CENTER_TOP = 5
Pone las 4 anclas en el centro del borde superior de los límites del control parental. Usar con set_anchors_preset().
LayoutPreset PRESET_CENTER_RIGHT = 6
Pone las 4 anclas en el centro del borde derecho de los límites del control parental. Usar con set_anchors_preset().
LayoutPreset PRESET_CENTER_BOTTOM = 7
Pone las 4 anclas en el centro del borde inferior de los límites del control parental. Usar con set_anchors_preset().
LayoutPreset PRESET_CENTER = 8
Pone las cuatro anclas en el centro de los límites del control parental. Usar con set_anchors_preset().
LayoutPreset PRESET_LEFT_WIDE = 9
Ancla las 4 anclas al borde izquierdo del control padre. El margen izquierdo se vuelve relativo al borde izquierdo y el margen superior relativo a la esquina superior izquierda del control padre. Usar con set_anchors_preset().
LayoutPreset PRESET_TOP_WIDE = 10
Ancla las 4 anclas al borde superior del control padre. El margen izquierdo se vuelve relativo a la esquina superior izquierda, el margen superior relativo al borde superior, y el margen derecho relativo a la esquina superior derecha del control padre. Usar con set_anchors_preset().
LayoutPreset PRESET_RIGHT_WIDE = 11
Ancla las 4 anclas al borde derecho del control padre. El margen derecho se vuelve relativo al borde derecho y el margen superior relativo a la esquina superior derecha del control padre. Usar con set_anchors_preset().
LayoutPreset PRESET_BOTTOM_WIDE = 12
Ancla las 4 anclas al borde inferior del control padre. El margen izquierdo se vuelve relativo a la esquina inferior izquierda, el margen inferior relativo al borde inferior, y el margen derecho relativo a la esquina inferior derecha del control padre. Usar con set_anchors_preset().
LayoutPreset PRESET_VCENTER_WIDE = 13
Pone las 4 anclas en una línea vertical que corta el control parental por la mitad. Usar con set_anchors_preset().
LayoutPreset PRESET_HCENTER_WIDE = 14
Pone las 4 anclas en una línea horizontal que corta el control parental por la mitad. Usar con set_anchors_preset().
LayoutPreset PRESET_FULL_RECT = 15
Ancla las 4 anclas a las esquinas respectivas del control padre. Establezca los 4 márgenes a 0 después de aplicar este preajuste y el Control se ajustará a su control padre. Usar con set_anchors_preset().
enum LayoutPresetMode: 🔗
LayoutPresetMode PRESET_MODE_MINSIZE = 0
El control será redimensionado a su tamaño mínimo.
LayoutPresetMode PRESET_MODE_KEEP_WIDTH = 1
El ancho del control no cambiará.
LayoutPresetMode PRESET_MODE_KEEP_HEIGHT = 2
La altura del control no cambiará.
LayoutPresetMode PRESET_MODE_KEEP_SIZE = 3
El tamaño del control no cambiará.
flags SizeFlags: 🔗
SizeFlags SIZE_SHRINK_BEGIN = 0
Le dice al Container padre que alinee el nodo con su inicio, ya sea el borde superior o el izquierdo. Es mutuamente exclusivo con SIZE_FILL y otras flags de tamaño de encogimiento, pero puede usarse con SIZE_EXPAND en algunos contenedores. Usar con size_flags_horizontal y size_flags_vertical.
Nota: Establecer esta flag es igual a no tener ninguna flag de tamaño.
SizeFlags SIZE_FILL = 1
Le dice al Container padre que expanda los límites de este nodo para llenar todo el espacio disponible sin empujar a ningún otro nodo. Es mutuamente exclusivo con las flags de tamaño de encogimiento. Usar con size_flags_horizontal y size_flags_vertical.
SizeFlags SIZE_EXPAND = 2
Le dice al padre Container que deje que este nodo tome todo el espacio disponible en el eje que marque. Si varios nodos vecinos están configurados para expandirse, compartirán el espacio basado en su relación de estiramiento. Véase size_flags_stretch_ratio. Utilízalo con size_flags_horizontal y size_flags_vertical.
SizeFlags SIZE_EXPAND_FILL = 3
Establece las flags de tamaño del nodo tanto para rellenar como para expandir. Véase SIZE_FILL y SIZE_EXPAND para más información.
SizeFlags SIZE_SHRINK_CENTER = 4
Le dice al Container padre que centre el nodo en el espacio disponible. Es mutuamente exclusivo con SIZE_FILL y otras flags de tamaño de encogimiento, pero puede usarse con SIZE_EXPAND en algunos contenedores. Usar con size_flags_horizontal y size_flags_vertical.
SizeFlags SIZE_SHRINK_END = 8
Le dice al Container padre que alinee el nodo con su final, ya sea el borde inferior o el derecho. Es mutuamente exclusivo con SIZE_FILL y otras flags de tamaño de encogimiento, pero puede usarse con SIZE_EXPAND en algunos contenedores. Usar con size_flags_horizontal y size_flags_vertical.
enum MouseFilter: 🔗
MouseFilter MOUSE_FILTER_STOP = 0
El control recibirá los eventos de entrada de movimiento del ratón y los eventos de entrada del botón del ratón si se hace clic en él a través de _gui_input(). El control también recibirá las señales mouse_entered y mouse_exited. Estos eventos se marcan automáticamente como manejados, y no se propagarán más a otros controles. Esto también resulta en el bloqueo de señales en otros controles.
MouseFilter MOUSE_FILTER_PASS = 1
The control will receive mouse movement input events and mouse button input events if clicked on through _gui_input(). The control will also receive the mouse_entered and mouse_exited signals.
If this control does not handle the event, the event will propagate up to its parent control if it has one. The event is bubbled up the node hierarchy until it reaches a non-CanvasItem, a control with MOUSE_FILTER_STOP, or a CanvasItem with CanvasItem.top_level enabled. This will allow signals to fire in all controls it reaches. If no control handled it, the event will be passed to Node._shortcut_input() for further processing.
MouseFilter MOUSE_FILTER_IGNORE = 2
El control no recibirá ningún evento de entrada de movimiento del ratón ni eventos de entrada del botón del ratón a través de _gui_input(). El control tampoco recibirá las señales mouse_entered ni mouse_exited. Esto no bloqueará a otros controles para que no reciban estos eventos o para que no activen las señales. Los eventos ignorados no se manejarán automáticamente. Si un hijo tiene MOUSE_FILTER_PASS y se ha pasado un evento a este control, el evento se propagará aún más hasta el padre del control.
Nota: Si el control ha recibido mouse_entered pero no mouse_exited, cambiar el mouse_filter a MOUSE_FILTER_IGNORE hará que se emita mouse_exited.
enum GrowDirection: 🔗
GrowDirection GROW_DIRECTION_BEGIN = 0
El control crecerá hacia la izquierda o hacia arriba para compensar si su tamaño mínimo se cambia para que sea mayor que su tamaño actual en el eje respectivo.
GrowDirection GROW_DIRECTION_END = 1
El control crecerá hacia la derecha o hacia abajo para compensar si su tamaño mínimo se cambia para que sea mayor que su tamaño actual en el eje respectivo.
GrowDirection GROW_DIRECTION_BOTH = 2
El control crecerá en ambas direcciones por igual para compensar si su tamaño mínimo se cambia para que sea mayor que su tamaño actual.
enum Anchor: 🔗
Anchor ANCHOR_BEGIN = 0
Encaja uno de los 4 lados del ancla en el origen del nodo Rect, en la parte superior izquierda. Úsalo con una de las variables miembro anchor_*, como anchor_left. Para cambiar las 4 anclas a la vez, usa set_anchors_preset().
Anchor ANCHOR_END = 1
Pone uno de los 4 lados del ancla al final del nodo Rect, en la parte inferior derecha. Úsalo con una de las variables miembros anchor_*, como anchor_left. Para cambiar las 4 anclas a la vez, usa set_anchors_preset().
enum LayoutDirection: 🔗
LayoutDirection LAYOUT_DIRECTION_INHERITED = 0
Dirección de diseño automática, determinada por la dirección de diseño del control padre.
LayoutDirection LAYOUT_DIRECTION_APPLICATION_LOCALE = 1
Dirección de diseño automática, determinada por la configuración regional actual. La dirección de diseño de derecha a izquierda se utiliza automáticamente para los idiomas que lo requieren, como el árabe y el hebreo, pero solo si se carga un archivo de traducción válido para el idioma dado (a menos que dicho idioma esté configurado como alternativa en ProjectSettings.internationalization/locale/fallback). Para todos los demás idiomas (o si Godot no encuentra un archivo de traducción válido), se utiliza la dirección de diseño de izquierda a derecha. Si utilizas TextServerFallback (ProjectSettings.internationalization/rendering/text_driver), siempre se utiliza la dirección de diseño de izquierda a derecha, independientemente del idioma. La dirección de diseño de derecha a izquierda también se puede forzar mediante ProjectSettings.internationalization/rendering/force_right_to_left_layout_direction.
LayoutDirection LAYOUT_DIRECTION_LTR = 2
Dirección de diseño de izquierda a derecha.
LayoutDirection LAYOUT_DIRECTION_RTL = 3
Dirección de diseño de derecha a izquierda.
LayoutDirection LAYOUT_DIRECTION_SYSTEM_LOCALE = 4
Dirección de diseño automática, determinada por la configuración regional del sistema. La dirección de diseño de derecha a izquierda se utiliza automáticamente para los idiomas que lo requieren, como el árabe y el hebreo, pero solo si se carga un archivo de traducción válido para el idioma dado. Para todos los demás idiomas (o si Godot no encuentra un archivo de traducción válido), se utiliza la dirección de diseño de izquierda a derecha. Si utilizas TextServerFallback (ProjectSettings.internationalization/rendering/text_driver), siempre se utiliza la dirección de diseño de izquierda a derecha, independientemente del idioma.
LayoutDirection LAYOUT_DIRECTION_MAX = 5
Representa el tamaño del enum LayoutDirection.
LayoutDirection LAYOUT_DIRECTION_LOCALE = 1
Obsoleto: Use LAYOUT_DIRECTION_APPLICATION_LOCALE instead.
enum TextDirection: 🔗
TextDirection TEXT_DIRECTION_INHERITED = 3
La dirección de escritura del texto es la misma que la dirección del diseño.
TextDirection TEXT_DIRECTION_AUTO = 0
Dirección de escritura de texto automática, determinada por la configuración regional actual y el contenido del texto.
TextDirection TEXT_DIRECTION_LTR = 1
Dirección de escritura de texto de izquierda a derecha.
TextDirection TEXT_DIRECTION_RTL = 2
Dirección de escritura de texto de derecha a izquierda.
Constantes
NOTIFICATION_RESIZED = 40 🔗
Se envía cuando el nodo cambia de tamaño. Usa size para obtener el nuevo tamaño.
NOTIFICATION_MOUSE_ENTER = 41 🔗
Enviado cuando el cursor del ratón entra en el área visible del control (o de cualquier control hijo), que no está ocluida detrás de otros Controles o Ventanas, siempre que su mouse_filter permita que el evento lo alcance e independientemente de si está actualmente enfocado o no.
Nota: CanvasItem.z_index no afecta qué Control recibe la notificación.
Véase también NOTIFICATION_MOUSE_ENTER_SELF.
NOTIFICATION_MOUSE_EXIT = 42 🔗
Enviado cuando el cursor del ratón sale del área visible del control (y de todos sus controles hijos), que no está ocluida detrás de otros Controles o Ventanas, siempre que su mouse_filter permita que el evento lo alcance e independientemente de si está actualmente enfocado o no.
Nota: CanvasItem.z_index no afecta qué Control recibe la notificación.
Véase también NOTIFICATION_MOUSE_EXIT_SELF.
NOTIFICATION_MOUSE_ENTER_SELF = 60 🔗
Experimental: The reason this notification is sent may change in the future.
Enviado cuando el cursor del ratón entra en el área visible del control, que no está ocluida detrás de otros Controles o Ventanas, siempre que su mouse_filter permita que el evento lo alcance e independientemente de si está actualmente enfocado o no.
Nota: CanvasItem.z_index no afecta qué Control recibe la notificación.
Véase también NOTIFICATION_MOUSE_ENTER.
NOTIFICATION_MOUSE_EXIT_SELF = 61 🔗
Experimental: The reason this notification is sent may change in the future.
Enviado cuando el cursor del ratón sale del área visible del control, que no está ocluida detrás de otros Controles o Ventanas, siempre que su mouse_filter permita que el evento lo alcance e independientemente de si está actualmente enfocado o no.
Nota: CanvasItem.z_index no afecta qué Control recibe la notificación.
Véase también NOTIFICATION_MOUSE_EXIT.
NOTIFICATION_FOCUS_ENTER = 43 🔗
Enviado cuando el nodo agarra el foco.
NOTIFICATION_FOCUS_EXIT = 44 🔗
Enviado cuando el nodo pierde el enfoque.
NOTIFICATION_THEME_CHANGED = 45 🔗
Enviado cuando el nodo necesita refrescar sus elementos de tema. Esto sucede en uno de los siguientes casos:
La propiedad theme se cambia en este nodo o en cualquiera de sus ancestros.
La propiedad theme_type_variation se cambia en este nodo.
Se cambia una de las sobrescrituras de propiedades de tema del nodo.
El nodo entra en el árbol de escenas.
Nota: Como optimización, esta notificación no se enviará por cambios que ocurran mientras este nodo esté fuera del árbol de escenas. En su lugar, todas las actualizaciones de los elementos del tema pueden aplicarse a la vez cuando el nodo entre en el árbol de escenas.
Nota: Esta notificación se recibe junto con Node.NOTIFICATION_ENTER_TREE, por lo que si estás instanciando una escena, los nodos hijos aún no estarán inicializados. Puedes usarla para configurar el tema para este nodo, para nodos hijos creados desde script, o si quieres acceder a los nodos hijos añadidos en el editor, asegúrate de que el nodo esté listo usando Node.is_node_ready().
func _notification(what):
if what == NOTIFICATION_THEME_CHANGED:
if not is_node_ready():
await ready # Espera a la señal ready.
$Label.add_theme_color_override("font_color", Color.YELLOW)
NOTIFICATION_SCROLL_BEGIN = 47 🔗
Se envía cuando este nodo está dentro de un ScrollContainer que ha empezado a desplazarse al arrastrar el área desplazable con un evento táctil. Esta notificación no se envía al desplazar arrastrando la barra de desplazamiento, desplazando con la rueda del ratón o desplazando con eventos de teclado/gamepad.
Nota: Esta señal solo se emite en Android o iOS, o en plataformas de escritorio/web cuando ProjectSettings.input_devices/pointing/emulate_touch_from_mouse está habilitado.
NOTIFICATION_SCROLL_END = 48 🔗
Se envía cuando este nodo está dentro de un ScrollContainer que ha dejado de desplazarse al arrastrar el área desplazable con un evento táctil. Esta notificación no se envía al desplazar arrastrando la barra de desplazamiento, desplazando con la rueda del ratón o desplazando con eventos de teclado/gamepad.
Nota: Esta señal solo se emite en Android o iOS, o en plataformas de escritorio/web cuando ProjectSettings.input_devices/pointing/emulate_touch_from_mouse está habilitado.
NOTIFICATION_LAYOUT_DIRECTION_CHANGED = 49 🔗
Enviado cuando la dirección de la disposición del control cambia de LTR o RTL o viceversa. Esta notificación se propaga a los nodos Control hijos como resultado de un cambio en layout_direction.
Descripciones de Propiedades
Array[NodePath] accessibility_controls_nodes = [] 🔗
Las rutas a los nodos que están controlados por este nodo.
Array[NodePath] accessibility_described_by_nodes = [] 🔗
Las rutas a los nodos que describen este nodo.
String accessibility_description = "" 🔗
La descripción del nodo legible por humanos que se reporta a las aplicaciones de asistencia.
Array[NodePath] accessibility_flow_to_nodes = [] 🔗
Las rutas a los nodos a los que fluye este nodo.
Array[NodePath] accessibility_labeled_by_nodes = [] 🔗
Las rutas a los nodos que etiquetan este nodo.
AccessibilityLiveMode accessibility_live = 0 🔗
void set_accessibility_live(value: AccessibilityLiveMode)
AccessibilityLiveMode get_accessibility_live()
El modo con el que se actualiza una región activa. Una región activa es un Node que se actualiza como resultado de un evento externo cuando el foco del usuario puede estar en otro lugar.
String accessibility_name = "" 🔗
El nombre del nodo legible por humanos que se informa a las apps de asistencia.
Ancla el borde inferior del nodo al origen, el centro o el final de su control padre. Cambia la forma en que el margen inferior se actualiza cuando el nodo se mueve o cambia de tamaño. Puedes usar una de las constantes Anchor para tu conveniencia.
Ancla el borde izquierdo del nodo al origen, el centro o el final de su control padre. Cambia la forma en que el margen izquierdo se actualiza cuando el nodo se mueve o cambia de tamaño. Puedes usar una de las constantes Anchor para tu conveniencia.
Ancla el borde derecho del nodo al origen, el centro o el final de su control padre. Cambia la forma en que el margen derecho se actualiza cuando el nodo se mueve o cambia de tamaño. Puedes usar una de las constantes Anchor para tu conveniencia.
Ancla el borde superior del nodo al origen, el centro o el final de su control padre. Cambia la forma en que el margen superior se actualiza cuando el nodo se mueve o cambia de tamaño. Puedes usar una de las constantes Anchor para tu conveniencia.
Obsoleto: Use Node.auto_translate_mode and Node.can_auto_translate() instead.
Activa o desactiva si algún texto debe cambiar automáticamente a su versión traducida dependiendo de la configuración regional actual.
Activa si el renderizado de los hijos basados en CanvasItem debe ser recortado al rectángulo de este control. Si es true, las partes de un hijo que estarían visiblemente fuera del rectángulo de este control no se renderizarán y no recibirán entrada.
Vector2 custom_minimum_size = Vector2(0, 0) 🔗
El tamaño mínimo del rectángulo delimitador del nodo. Si lo estableces en un valor mayor que (0, 0), el rectángulo delimitador del nodo siempre tendrá al menos este tamaño. Ten en cuenta que los nodos Control tienen su tamaño mínimo interno devuelto por get_minimum_size(). Depende del contenido del control, como texto, texturas o style boxes. El tamaño mínimo real es el valor máximo de esta propiedad y el tamaño mínimo interno (véase get_combined_minimum_size()).
FocusBehaviorRecursive focus_behavior_recursive = 0 🔗
void set_focus_behavior_recursive(value: FocusBehaviorRecursive)
FocusBehaviorRecursive get_focus_behavior_recursive()
Determina qué controles se pueden enfocar junto con focus_mode. Véase get_focus_mode_with_override(). Dado que el comportamiento predeterminado es FOCUS_BEHAVIOR_INHERITED, esto se puede utilizar para evitar que todos los controles secundarios se enfoquen.
Determina qué controles se pueden enfocar. Solo se puede enfocar un control a la vez, y el control enfocado recibirá eventos de teclado, gamepad y ratón en _gui_input(). Utiliza get_focus_mode_with_override() para determinar si un control puede tomar el foco, ya que focus_behavior_recursive también le afecta. Véase también grab_focus().
NodePath focus_neighbor_bottom = NodePath("") 🔗
Le dice a Godot a qué nodo debe darle el foco si el usuario pulsa la flecha abajo en el teclado o abajo en un gamepad de forma predeterminada. Puedes cambiar la tecla editando la acción de entrada ProjectSettings.input/ui_down. El nodo debe ser un Control. Si esta propiedad no está establecida, Godot le dará el foco al Control más cercano a la parte inferior de este.
NodePath focus_neighbor_left = NodePath("") 🔗
Le dice a Godot a qué nodo debe darle el foco si el usuario pulsa la flecha izquierda en el teclado o a la izquierda en un gamepad de forma predeterminada. Puedes cambiar la tecla editando la acción de entrada ProjectSettings.input/ui_left. El nodo debe ser un Control. Si esta propiedad no está establecida, Godot le dará el foco al Control más cercano a la izquierda de este.
NodePath focus_neighbor_right = NodePath("") 🔗
Le dice a Godot a qué nodo debe darle el foco si el usuario pulsa la flecha derecha en el teclado o a la derecha en un gamepad de forma predeterminada. Puedes cambiar la tecla editando la acción de entrada ProjectSettings.input/ui_right. El nodo debe ser un Control. Si esta propiedad no está establecida, Godot le dará el foco al Control más cercano a la derecha de este.
NodePath focus_neighbor_top = NodePath("") 🔗
Le dice a Godot a qué nodo debe darle el foco si el usuario pulsa la flecha arriba en el teclado o arriba en un gamepad de forma predeterminada. Puedes cambiar la tecla editando la acción de entrada ProjectSettings.input/ui_up. El nodo debe ser un Control. Si esta propiedad no está establecida, Godot le dará el foco al Control más cercano a la parte superior de este.
NodePath focus_next = NodePath("") 🔗
Tells Godot which node it should give focus to if the user presses Tab on a keyboard by default. You can change the key by editing the ProjectSettings.input/ui_focus_next input action.
If this property is not set, Godot will select a "best guess" based on surrounding nodes in the scene tree.
NodePath focus_previous = NodePath("") 🔗
Tells Godot which node it should give focus to if the user presses Shift + Tab on a keyboard by default. You can change the key by editing the ProjectSettings.input/ui_focus_prev input action.
If this property is not set, Godot will select a "best guess" based on surrounding nodes in the scene tree.
Vector2 get_global_position()
La posición global del nodo, relativa al mundo (normalmente a la CanvasLayer).
GrowDirection grow_horizontal = 1 🔗
void set_h_grow_direction(value: GrowDirection)
GrowDirection get_h_grow_direction()
Controla la dirección en el eje horizontal en la que el control debe crecer si su tamaño mínimo horizontal se cambia para que sea mayor que su tamaño actual, ya que el control siempre tiene que ser al menos del tamaño mínimo.
GrowDirection grow_vertical = 1 🔗
void set_v_grow_direction(value: GrowDirection)
GrowDirection get_v_grow_direction()
Controla la dirección en el eje vertical en la que el control debe crecer si su tamaño mínimo vertical se cambia para que sea mayor que su tamaño actual, ya que el control siempre tiene que ser al menos del tamaño mínimo.
LayoutDirection layout_direction = 0 🔗
void set_layout_direction(value: LayoutDirection)
LayoutDirection get_layout_direction()
Controla la dirección del diseño y la dirección de la escritura del texto. Los diseños de derecha a izquierda son necesarios para ciertos idiomas (por ejemplo, árabe y hebreo). Véase también is_layout_rtl().
bool localize_numeral_system = true 🔗
Si es true, convierte automáticamente los números de línea de código, los índices de lista, los valores de SpinBox y ProgressBar del árabe occidental (0..9) a los sistemas de numeración utilizados en la configuración regional actual.
Nota: Los números dentro del texto no se convierten automáticamente, se pueden hacer manualmente, usando TextServer.format_number().
MouseBehaviorRecursive mouse_behavior_recursive = 0 🔗
void set_mouse_behavior_recursive(value: MouseBehaviorRecursive)
MouseBehaviorRecursive get_mouse_behavior_recursive()
Determina qué controles pueden recibir entrada del ratón junto con mouse_filter. Véase get_mouse_filter_with_override(). Dado que el comportamiento predeterminado es MOUSE_BEHAVIOR_INHERITED, esto se puede utilizar para evitar que todos los controles hijos reciban entrada del ratón.
CursorShape mouse_default_cursor_shape = 0 🔗
void set_default_cursor_shape(value: CursorShape)
CursorShape get_default_cursor_shape()
La forma del cursor por defecto para este control. Útil para los plugins de Godot y las aplicaciones o juegos que utilizan los cursores del ratón del sistema.
Nota: En Linux, las formas pueden variar dependiendo del tema del cursor del sistema.
MouseFilter mouse_filter = 0 🔗
void set_mouse_filter(value: MouseFilter)
MouseFilter get_mouse_filter()
Determina qué controles podrán recibir eventos de entrada de botón del ratón a través de _gui_input() y las señales mouse_entered y mouse_exited. También determina cómo deben propagarse estos eventos. Consulta las constantes para saber qué hace cada una. Utiliza get_mouse_filter_with_override() para determinar si un control puede recibir entrada del ratón, ya que mouse_behavior_recursive también le afecta.
bool mouse_force_pass_scroll_events = true 🔗
Cuando está activado, los eventos de la rueda del ratón procesados por _gui_input() se pasarán al control padre incluso si mouse_filter está establecido en MOUSE_FILTER_STOP.
Deberías desactivarlo en la raíz de tu IU si no quieres que los eventos de desplazamiento vayan al procesamiento de Node._unhandled_input().
Nota: Debido a que esta propiedad por defecto es true, esto permite que los contenedores desplazables anidados funcionen inmediatamente.
Distancia entre el borde inferior del nodo y su control padre, basado en anchor_bottom.
Los márgenes son a menudo controlados por uno o varios nodos padre Container, por lo que no deberías modificarlos manualmente si tu nodo es un hijo directo de un Container. Los márgenes se actualizan automáticamente cuando mueves o cambias el tamaño del nodo.
Distancia entre el borde izquierdo del nodo y su control padre, basado en anchor_left.
Los márgenes son a menudo controlados por uno o varios nodos padre Container, por lo que no deberías modificarlos manualmente si tu nodo es un hijo directo de un Container. Los márgenes se actualizan automáticamente cuando mueves o cambias el tamaño del nodo.
Distancia entre el borde derecho del nodo y su control padre, basado en anchor_right.
Los márgenes son a menudo controlados por uno o varios nodos padre Container, por lo que no deberías modificarlos manualmente si tu nodo es un hijo directo de un Container. Los márgenes se actualizan automáticamente cuando mueves o cambias el tamaño del nodo.
Distancia entre el borde superior del nodo y su control padre, basado en anchor_top.
Los márgenes a menudo están controlados por uno o varios nodos padre Container, por lo que no deberías modificarlos manualmente si tu nodo es un hijo directo de un Container. Los márgenes se actualizan automáticamente cuando mueves o cambias el tamaño del nodo.
Vector2 pivot_offset = Vector2(0, 0) 🔗
Por defecto, el pivote del nodo es su esquina superior izquierda. Cuando cambias su rotation o scale, rotará o escalará alrededor de este pivote. Establece esta propiedad a size / 2 para pivotar alrededor del centro del Control.
Vector2 position = Vector2(0, 0) 🔗
Vector2 get_position()
The node's position, relative to its containing node. It corresponds to the rectangle's top-left corner. The property is not affected by pivot_offset.
La rotación del nodo alrededor de su pivote, en radianes. Véase pivot_offset para cambiar la posición del pivote.
Nota: Esta propiedad se edita en el inspector en grados. Si quieres usar grados en un script, usa rotation_degrees.
Propiedad auxiliar para acceder a rotation en grados en lugar de radianes.
Vector2 scale = Vector2(1, 1) 🔗
The node's scale, relative to its size. Change this property to scale the node around its pivot_offset. The Control's tooltip will also scale according to this value.
Note: This property is mainly intended to be used for animation purposes. To support multiple resolutions in your project, use an appropriate viewport stretch mode as described in the documentation instead of scaling Controls individually.
Note: FontFile.oversampling does not take Control scale into account. This means that scaling up/down will cause bitmap fonts and rasterized (non-MSDF) dynamic fonts to appear blurry or pixelated. To ensure text remains crisp regardless of scale, you can enable MSDF font rendering by enabling ProjectSettings.gui/theme/default_font_multichannel_signed_distance_field (applies to the default project font only), or enabling Multichannel Signed Distance Field in the import options of a DynamicFont for custom fonts. On system fonts, SystemFont.multichannel_signed_distance_field can be enabled in the inspector.
Note: If the Control node is a child of a Container node, the scale will be reset to Vector2(1, 1) when the scene is instantiated. To set the Control's scale when it's instantiated, wait for one frame using await get_tree().process_frame then set its scale property.
El Node que debe ser un padre del Control enfocado para que el atajo se active. Si es null, el atajo puede activarse cuando cualquier control esté enfocado (un atajo global). Esto permite que los atajos se acepten solo cuando el usuario tiene una cierta área de la GUI enfocada.
Vector2 size = Vector2(0, 0) 🔗
Vector2 get_size()
El tamaño del rectángulo delimitador del nodo, en el sistema de coordenadas del nodo. Los nodos Container actualizan esta propiedad automáticamente.
BitField[SizeFlags] size_flags_horizontal = 1 🔗
Le dice a los nodos padre Container cómo deben cambiar de tamaño y colocar el nodo en el eje X. Usa una combinación de las constantes SizeFlags para cambiar los flags. Consulta las constantes para saber qué hace cada una.
float size_flags_stretch_ratio = 1.0 🔗
Si el nodo y al menos uno de sus vecinos utiliza la bandera de tamaño SIZE_EXPAND, el padre Container le permitirá ocupar más o menos espacio dependiendo de esta propiedad. Si este nodo tiene una relación de estiramiento de 2 y su vecino una relación de 1, este nodo ocupará dos tercios del espacio disponible.
BitField[SizeFlags] size_flags_vertical = 1 🔗
Le dice a los nodos padres Container cómo deberían cambiar de tamaño y colocar el nodo en el eje Y. Usa una combinación de las constantes SizeFlags para cambiar las banderas. Mira las constantes para aprender lo que hace cada una.
El recurso Theme que este nodo y todos sus hijos Control y Window usan. Si un nodo hijo tiene su propio recurso Theme establecido, los elementos del tema se fusionan con las definiciones del hijo, teniendo este mayor prioridad.
Nota: Los estilos de Window no tendrán efecto a menos que la ventana esté integrada.
StringName theme_type_variation = &"" 🔗
void set_theme_type_variation(value: StringName)
StringName get_theme_type_variation()
El nombre de una variación del tipo de tema utilizada por este Control para buscar sus propios elementos de tema. Cuando está vacío, se utiliza el nombre de la clase del nodo (por ejemplo, Button para el control Button), así como los nombres de clase de todas las clases padre (en orden de herencia).
Cuando se establece, esta propiedad da la máxima prioridad al tipo del nombre especificado. Este tipo puede a su vez extender otro tipo, formando una cadena de dependencias. Véase Theme.set_type_variation(). Si el elemento del tema no se puede encontrar utilizando este tipo o sus tipos base, la búsqueda recurre a los nombres de las clases.
Nota: Para buscar los propios elementos de Control, utiliza varios métodos get_theme_* sin especificar theme_type.
Nota: Los elementos del tema se buscan en el orden del árbol, de la rama a la raíz, donde se comprueba cada nodo Control por su propiedad theme. Se devuelve la primera coincidencia con cualquier tipo/nombre de clase. El Theme a nivel de proyecto y el Theme predeterminado se comprueban en último lugar.
AutoTranslateMode tooltip_auto_translate_mode = 0 🔗
void set_tooltip_auto_translate_mode(value: AutoTranslateMode)
AutoTranslateMode get_tooltip_auto_translate_mode()
Define si el texto de la sugerencia debe cambiar automáticamente a su versión traducida dependiendo de la configuración regional actual. Utiliza el mismo modo de traducción automática que este control cuando se establece en Node.AUTO_TRANSLATE_MODE_INHERIT.
Nota: Las sugerencias personalizadas mediante _make_custom_tooltip() no utilizan este modo de traducción automática automáticamente.
The default tooltip text. The tooltip appears when the user's mouse cursor stays idle over this control for a few moments, provided that the mouse_filter property is not MOUSE_FILTER_IGNORE. The time required for the tooltip to appear can be changed with the ProjectSettings.gui/timers/tooltip_delay_sec setting.
This string is the default return value of get_tooltip(). Override _get_tooltip() to generate tooltip text dynamically. Override _make_custom_tooltip() to customize the tooltip interface and behavior.
The tooltip popup will use either a default implementation, or a custom one that you can provide by overriding _make_custom_tooltip(). The default tooltip includes a PopupPanel and Label whose theme properties can be customized using Theme methods with the "TooltipPanel" and "TooltipLabel" respectively. For example:
var style_box = StyleBoxFlat.new()
style_box.set_bg_color(Color(1, 1, 0))
style_box.set_border_width_all(2)
# We assume here that the `theme` property has been assigned a custom Theme beforehand.
theme.set_stylebox("panel", "TooltipPanel", style_box)
theme.set_color("font_color", "TooltipLabel", Color(0, 1, 1))
var styleBox = new StyleBoxFlat();
styleBox.SetBgColor(new Color(1, 1, 0));
styleBox.SetBorderWidthAll(2);
// We assume here that the `Theme` property has been assigned a custom Theme beforehand.
Theme.SetStyleBox("panel", "TooltipPanel", styleBox);
Theme.SetColor("font_color", "TooltipLabel", new Color(0, 1, 1));
Descripciones de Métodos
String _accessibility_get_contextual_info() virtual const 🔗
Return the description of the keyboard shortcuts and other contextual help for this control.
bool _can_drop_data(at_position: Vector2, data: Variant) virtual const 🔗
Godot calls this method to test if data from a control's _get_drag_data() can be dropped at at_position. at_position is local to this control.
This method should only be used to test the data. Process the data in _drop_data().
Note: If the drag was initiated by a keyboard shortcut or accessibility_drag(), at_position is set to Vector2.INF, and the currently selected item/text position should be used as the drop position.
func _can_drop_data(position, data):
# Check position if it is relevant to you
# Otherwise, just check data
return typeof(data) == TYPE_DICTIONARY and data.has("expected")
public override bool _CanDropData(Vector2 atPosition, Variant data)
{
// Check position if it is relevant to you
// Otherwise, just check data
return data.VariantType == Variant.Type.Dictionary && data.AsGodotDictionary().ContainsKey("expected");
}
void _drop_data(at_position: Vector2, data: Variant) virtual 🔗
Godot calls this method to pass you the data from a control's _get_drag_data() result. Godot first calls _can_drop_data() to test if data is allowed to drop at at_position where at_position is local to this control.
Note: If the drag was initiated by a keyboard shortcut or accessibility_drag(), at_position is set to Vector2.INF, and the currently selected item/text position should be used as the drop position.
func _can_drop_data(position, data):
return typeof(data) == TYPE_DICTIONARY and data.has("color")
func _drop_data(position, data):
var color = data["color"]
public override bool _CanDropData(Vector2 atPosition, Variant data)
{
return data.VariantType == Variant.Type.Dictionary && data.AsGodotDictionary().ContainsKey("color");
}
public override void _DropData(Vector2 atPosition, Variant data)
{
Color color = data.AsGodotDictionary()["color"].AsColor();
}
String _get_accessibility_container_name(node: Node) virtual const 🔗
Override this method to return a human-readable description of the position of the child node in the custom container, added to the accessibility_name.
Variant _get_drag_data(at_position: Vector2) virtual 🔗
Godot calls this method to get data that can be dragged and dropped onto controls that expect drop data. Returns null if there is no data to drag. Controls that want to receive drop data should implement _can_drop_data() and _drop_data(). at_position is local to this control. Drag may be forced with force_drag().
A preview that will follow the mouse that should represent the data can be set with set_drag_preview(). A good time to set the preview is in this method.
Note: If the drag was initiated by a keyboard shortcut or accessibility_drag(), at_position is set to Vector2.INF, and the currently selected item/text position should be used as the drag position.
func _get_drag_data(position):
var mydata = make_data() # This is your custom method generating the drag data.
set_drag_preview(make_preview(mydata)) # This is your custom method generating the preview of the drag data.
return mydata
public override Variant _GetDragData(Vector2 atPosition)
{
var myData = MakeData(); // This is your custom method generating the drag data.
SetDragPreview(MakePreview(myData)); // This is your custom method generating the preview of the drag data.
return myData;
}
Vector2 _get_minimum_size() virtual const 🔗
Virtual method to be implemented by the user. Returns the minimum size for this control. Alternative to custom_minimum_size for controlling minimum size via code. The actual minimum size will be the max value of these two (in each axis separately).
If not overridden, defaults to Vector2.ZERO.
Note: This method will not be called when the script is attached to a Control node that already overrides its minimum size (e.g. Label, Button, PanelContainer etc.). It can only be used with most basic GUI nodes, like Control, Container, Panel etc.
String _get_tooltip(at_position: Vector2) virtual const 🔗
Virtual method to be implemented by the user. Returns the tooltip text for the position at_position in control's local coordinates, which will typically appear when the cursor is resting over this control. See get_tooltip().
Note: If this method returns an empty String and _make_custom_tooltip() is not overridden, no tooltip is displayed.
void _gui_input(event: InputEvent) virtual 🔗
Virtual method to be implemented by the user. Override this method to handle and accept inputs on UI elements. See also accept_event().
Example: Click on the control to print a message:
func _gui_input(event):
if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
print("I've been clicked D:")
public override void _GuiInput(InputEvent @event)
{
if (@event is InputEventMouseButton mb)
{
if (mb.ButtonIndex == MouseButton.Left && mb.Pressed)
{
GD.Print("I've been clicked D:");
}
}
}
If the event inherits InputEventMouse, this method will not be called when:
the control's mouse_filter is set to MOUSE_FILTER_IGNORE;
the control is obstructed by another control on top, that doesn't have mouse_filter set to MOUSE_FILTER_IGNORE;
the control's parent has mouse_filter set to MOUSE_FILTER_STOP or has accepted the event;
the control's parent has clip_contents enabled and the
event's position is outside the parent's rectangle;the
event's position is outside the control (see _has_point()).
Note: The event's position is relative to this control's origin.
bool _has_point(point: Vector2) virtual const 🔗
Virtual method to be implemented by the user. Returns whether the given point is inside this control.
If not overridden, default behavior is checking if the point is within control's Rect.
Note: If you want to check if a point is inside the control, you can use Rect2(Vector2.ZERO, size).has_point(point).
Object _make_custom_tooltip(for_text: String) virtual const 🔗
Virtual method to be implemented by the user. Returns a Control node that should be used as a tooltip instead of the default one. for_text is the return value of get_tooltip().
The returned node must be of type Control or Control-derived. It can have child nodes of any type. It is freed when the tooltip disappears, so make sure you always provide a new instance (if you want to use a pre-existing node from your scene tree, you can duplicate it and pass the duplicated instance). When null or a non-Control node is returned, the default tooltip will be used instead.
The returned node will be added as child to a PopupPanel, so you should only provide the contents of that panel. That PopupPanel can be themed using Theme.set_stylebox() for the type "TooltipPanel" (see tooltip_text for an example).
Note: The tooltip is shrunk to minimal size. If you want to ensure it's fully visible, you might want to set its custom_minimum_size to some non-zero value.
Note: The node (and any relevant children) should have their CanvasItem.visible set to true when returned, otherwise, the viewport that instantiates it will not be able to calculate its minimum size reliably.
Note: If overridden, this method is called even if get_tooltip() returns an empty string. When this happens with the default tooltip, it is not displayed. To copy this behavior, return null in this method when for_text is empty.
Example: Use a constructed node as a tooltip:
func _make_custom_tooltip(for_text):
var label = Label.new()
label.text = for_text
return label
public override Control _MakeCustomTooltip(string forText)
{
var label = new Label();
label.Text = forText;
return label;
}
Example: Usa a scene instance as a tooltip:
func _make_custom_tooltip(for_text):
var tooltip = preload("res://some_tooltip_scene.tscn").instantiate()
tooltip.get_node("Label").text = for_text
return tooltip
public override Control _MakeCustomTooltip(string forText)
{
Node tooltip = ResourceLoader.Load<PackedScene>("res://some_tooltip_scene.tscn").Instantiate();
tooltip.GetNode<Label>("Label").Text = forText;
return tooltip;
}
Array[Vector3i] _structured_text_parser(args: Array, text: String) virtual const 🔗
User defined BiDi algorithm override function.
Returns an Array of Vector3i text ranges and text base directions, in the left-to-right order. Ranges should cover full source text without overlaps. BiDi algorithm will be used on each range separately.
void accept_event() 🔗
Marks an input event as handled. Once you accept an input event, it stops propagating, even to nodes listening to Node._unhandled_input() or Node._unhandled_key_input().
Note: This does not affect the methods in Input, only the way events are propagated.
void accessibility_drag() 🔗
Starts drag-and-drop operation without using a mouse.
void accessibility_drop() 🔗
Ends drag-and-drop operation without using a mouse.
void add_theme_color_override(name: StringName, color: Color) 🔗
Creates a local override for a theme Color with the specified name. Local overrides always take precedence when fetching theme items for the control. An override can be removed with remove_theme_color_override().
See also get_theme_color().
Example: Override a Label's color and reset it later:
# Given the child Label node "MyLabel", override its font color with a custom value.
$MyLabel.add_theme_color_override("font_color", Color(1, 0.5, 0))
# Reset the font color of the child label.
$MyLabel.remove_theme_color_override("font_color")
# Alternatively it can be overridden with the default value from the Label type.
$MyLabel.add_theme_color_override("font_color", get_theme_color("font_color", "Label"))
// Given the child Label node "MyLabel", override its font color with a custom value.
GetNode<Label>("MyLabel").AddThemeColorOverride("font_color", new Color(1, 0.5f, 0));
// Reset the font color of the child label.
GetNode<Label>("MyLabel").RemoveThemeColorOverride("font_color");
// Alternatively it can be overridden with the default value from the Label type.
GetNode<Label>("MyLabel").AddThemeColorOverride("font_color", GetThemeColor("font_color", "Label"));
void add_theme_constant_override(name: StringName, constant: int) 🔗
Creates a local override for a theme constant with the specified name. Local overrides always take precedence when fetching theme items for the control. An override can be removed with remove_theme_constant_override().
See also get_theme_constant().
void add_theme_font_override(name: StringName, font: Font) 🔗
Creates a local override for a theme Font with the specified name. Local overrides always take precedence when fetching theme items for the control. An override can be removed with remove_theme_font_override().
See also get_theme_font().
void add_theme_font_size_override(name: StringName, font_size: int) 🔗
Creates a local override for a theme font size with the specified name. Local overrides always take precedence when fetching theme items for the control. An override can be removed with remove_theme_font_size_override().
See also get_theme_font_size().
void add_theme_icon_override(name: StringName, texture: Texture2D) 🔗
Creates a local override for a theme icon with the specified name. Local overrides always take precedence when fetching theme items for the control. An override can be removed with remove_theme_icon_override().
See also get_theme_icon().
void add_theme_stylebox_override(name: StringName, stylebox: StyleBox) 🔗
Creates a local override for a theme StyleBox with the specified name. Local overrides always take precedence when fetching theme items for the control. An override can be removed with remove_theme_stylebox_override().
See also get_theme_stylebox().
Example: Modify a property in a StyleBox by duplicating it:
# The snippet below assumes the child node "MyButton" has a StyleBoxFlat assigned.
# Resources are shared across instances, so we need to duplicate it
# to avoid modifying the appearance of all other buttons.
var new_stylebox_normal = $MyButton.get_theme_stylebox("normal").duplicate()
new_stylebox_normal.border_width_top = 3
new_stylebox_normal.border_color = Color(0, 1, 0.5)
$MyButton.add_theme_stylebox_override("normal", new_stylebox_normal)
# Remove the stylebox override.
$MyButton.remove_theme_stylebox_override("normal")
// The snippet below assumes the child node "MyButton" has a StyleBoxFlat assigned.
// Resources are shared across instances, so we need to duplicate it
// to avoid modifying the appearance of all other buttons.
StyleBoxFlat newStyleboxNormal = GetNode<Button>("MyButton").GetThemeStylebox("normal").Duplicate() as StyleBoxFlat;
newStyleboxNormal.BorderWidthTop = 3;
newStyleboxNormal.BorderColor = new Color(0, 1, 0.5f);
GetNode<Button>("MyButton").AddThemeStyleboxOverride("normal", newStyleboxNormal);
// Remove the stylebox override.
GetNode<Button>("MyButton").RemoveThemeStyleboxOverride("normal");
void begin_bulk_theme_override() 🔗
Prevents *_theme_*_override methods from emitting NOTIFICATION_THEME_CHANGED until end_bulk_theme_override() is called.
void end_bulk_theme_override() 🔗
Ends a bulk theme override update. See begin_bulk_theme_override().
Control find_next_valid_focus() const 🔗
Finds the next (below in the tree) Control that can receive the focus.
Control find_prev_valid_focus() const 🔗
Finds the previous (above in the tree) Control that can receive the focus.
Control find_valid_focus_neighbor(side: Side) const 🔗
Finds the next Control that can receive the focus on the specified Side.
Note: This is different from get_focus_neighbor(), which returns the path of a specified focus neighbor.
void force_drag(data: Variant, preview: Control) 🔗
Forces drag and bypasses _get_drag_data() and set_drag_preview() by passing data and preview. Drag will start even if the mouse is neither over nor pressed on this control.
The methods _can_drop_data() and _drop_data() must be implemented on controls that want to receive drop data.
float get_anchor(side: Side) const 🔗
Devuelve el anclaje para el Side especificado. Un método getter para anchor_bottom, anchor_left, anchor_right y anchor_top.
Returns offset_left and offset_top. See also position.
Vector2 get_combined_minimum_size() const 🔗
Returns combined minimum size from custom_minimum_size and get_minimum_size().
CursorShape get_cursor_shape(position: Vector2 = Vector2(0, 0)) const 🔗
Devuelve la forma del cursor del ratón para este control cuando se pasa por encima de position en coordenadas locales. Para la mayoría de los controles, esto es lo mismo que mouse_default_cursor_shape, pero algunos controles incorporados implementan una lógica más compleja.
Devuelve offset_right y offset_bottom.
FocusMode get_focus_mode_with_override() const 🔗
Devuelve el focus_mode, pero tiene en cuenta el focus_behavior_recursive. Si focus_behavior_recursive está establecido en FOCUS_BEHAVIOR_DISABLED, o está establecido en FOCUS_BEHAVIOR_INHERITED y su antecesor está establecido en FOCUS_BEHAVIOR_DISABLED, entonces esto devuelve FOCUS_NONE.
NodePath get_focus_neighbor(side: Side) const 🔗
Devuelve el vecino de foco para el Side especificado. Un método getter para focus_neighbor_bottom, focus_neighbor_left, focus_neighbor_right y focus_neighbor_top.
Nota: Para encontrar el siguiente Control en el Side específico, incluso si no se ha asignado un vecino, usa find_valid_focus_neighbor().
Rect2 get_global_rect() const 🔗
Devuelve la posición y el tamaño del control en relación con el lienzo que lo contiene. Véase global_position y size.
Nota: Si el propio nodo o cualquier CanvasItem padre entre el nodo y el lienzo tienen una rotación o inclinación no predeterminada, el tamaño resultante probablemente no sea significativo.
Nota: Establecer Viewport.gui_snap_controls_to_pixels a true puede dar lugar a imprecisiones de redondeo entre el control visualizado y el Rect2 devuelto.
Vector2 get_minimum_size() const 🔗
Devuelve el tamaño mínimo para este control. Véase custom_minimum_size.
MouseFilter get_mouse_filter_with_override() const 🔗
Devuelve el mouse_filter, pero tiene en cuenta el mouse_behavior_recursive. Si mouse_behavior_recursive está establecido en MOUSE_BEHAVIOR_DISABLED, o está establecido en MOUSE_BEHAVIOR_INHERITED y su antecesor está establecido en MOUSE_BEHAVIOR_DISABLED, entonces esto devuelve MOUSE_FILTER_IGNORE.
float get_offset(offset: Side) const 🔗
Devuelve el offset para el Side especificado. Un método getter para offset_bottom, offset_left, offset_right y offset_top.
Vector2 get_parent_area_size() const 🔗
Devuelve la anchura/altura ocupada en el control parental.
Control get_parent_control() const 🔗
Devuelve el nodo de control del padre.
Devuelve la posición y el tamaño del control en el sistema de coordenadas del nodo que lo contiene. Véase position, scale y size.
Nota: Si rotation no es la rotación predeterminada, el tamaño resultante no es significativo.
Nota: Establecer Viewport.gui_snap_controls_to_pixels a true puede provocar imprecisiones de redondeo entre el control mostrado y el Rect2 devuelto.
Vector2 get_screen_position() const 🔗
Returns the position of this Control in global screen coordinates (i.e. taking window position into account). Mostly useful for editor plugins.
Equals to global_position if the window is embedded (see Viewport.gui_embed_subwindows).
Example: Show a popup at the mouse position:
popup_menu.position = get_screen_position() + get_local_mouse_position()
popup_menu.reset_size()
popup_menu.popup()
Color get_theme_color(name: StringName, theme_type: StringName = &"") const 🔗
Returns a Color from the first matching Theme in the tree if that Theme has a color item with the specified name and theme_type. If theme_type is omitted the class name of the current control is used as the type, or theme_type_variation if it is defined. If the type is a class name its parent classes are also checked, in order of inheritance. If the type is a variation its base types are checked, in order of dependency, then the control's class name and its parent classes are checked.
For the current control its local overrides are considered first (see add_theme_color_override()), then its assigned theme. After the current control, each parent control and its assigned theme are considered; controls without a theme assigned are skipped. If no matching Theme is found in the tree, the custom project Theme (see ProjectSettings.gui/theme/custom) and the default Theme are used (see ThemeDB).
func _ready():
# Get the font color defined for the current Control's class, if it exists.
modulate = get_theme_color("font_color")
# Get the font color defined for the Button class.
modulate = get_theme_color("font_color", "Button")
public override void _Ready()
{
// Get the font color defined for the current Control's class, if it exists.
Modulate = GetThemeColor("font_color");
// Get the font color defined for the Button class.
Modulate = GetThemeColor("font_color", "Button");
}
int get_theme_constant(name: StringName, theme_type: StringName = &"") const 🔗
Devuelve una constante del primer Theme coincidente en el árbol si ese Theme tiene un elemento constante con el name y el theme_type especificados.
Véase get_theme_color() para más detalles.
float get_theme_default_base_scale() const 🔗
Devuelve el valor de escala base predeterminado del primer Theme coincidente en el árbol si ese Theme tiene un valor Theme.default_base_scale válido.
Véase get_theme_color() para obtener más detalles.
Font get_theme_default_font() const 🔗
Devuelve la fuente predeterminada del primer Theme coincidente en el árbol si ese Theme tiene un valor Theme.default_font válido.
Véase get_theme_color() para obtener más detalles.
int get_theme_default_font_size() const 🔗
Devuelve el tamaño de fuente predeterminado del primer Theme coincidente en el árbol si ese Theme tiene un valor Theme.default_font_size válido.
Véase get_theme_color() para obtener más detalles.
Font get_theme_font(name: StringName, theme_type: StringName = &"") const 🔗
Devuelve una Font del primer Theme coincidente en el árbol si ese Theme tiene un elemento de fuente con el name y el theme_type especificados.
Véase get_theme_color() para obtener más detalles.
int get_theme_font_size(name: StringName, theme_type: StringName = &"") const 🔗
Devuelve un tamaño de fuente del primer Theme coincidente en el árbol si ese Theme tiene un elemento de tamaño de fuente con el name y el theme_type especificados.
Véase get_theme_color() para obtener más detalles.
Texture2D get_theme_icon(name: StringName, theme_type: StringName = &"") const 🔗
Devuelve un icono del primer Theme coincidente en el árbol si ese Theme tiene un elemento de icono con el name y el theme_type especificados.
Véase get_theme_color() para más detalles.
StyleBox get_theme_stylebox(name: StringName, theme_type: StringName = &"") const 🔗
Returns a StyleBox from the first matching Theme in the tree if that Theme has a stylebox item with the specified name and theme_type.
See get_theme_color() for details.
String get_tooltip(at_position: Vector2 = Vector2(0, 0)) const 🔗
Returns the tooltip text for the position at_position in control's local coordinates, which will typically appear when the cursor is resting over this control. By default, it returns tooltip_text.
This method can be overridden to customize its behavior. See _get_tooltip().
Note: If this method returns an empty String and _make_custom_tooltip() is not overridden, no tooltip is displayed.
void grab_click_focus() 🔗
Creates an InputEventMouseButton that attempts to click the control. If the event is received, the control gains focus.
func _process(delta):
grab_click_focus() # When clicking another Control node, this node will be clicked instead.
public override void _Process(double delta)
{
GrabClickFocus(); // When clicking another Control node, this node will be clicked instead.
}
void grab_focus() 🔗
Steal the focus from another control and become the focused control (see focus_mode).
Note: Using this method together with Callable.call_deferred() makes it more reliable, especially when called inside Node._ready().
Devuelve true si este es el control enfocado actual. Ver focus_mode.
bool has_theme_color(name: StringName, theme_type: StringName = &"") const 🔗
Devuelve true si hay un Theme coincidente en el árbol que tiene un elemento de color con el name y el theme_type especificados.
Véase get_theme_color() para más detalles.
bool has_theme_color_override(name: StringName) const 🔗
Devuelve true si hay una sobrescritura local para un Color de tema con el name especificado en este nodo Control.
Véase add_theme_color_override().
bool has_theme_constant(name: StringName, theme_type: StringName = &"") const 🔗
Devuelve true si hay un Theme coincidente en el árbol que tiene un elemento constante con el name y el theme_type especificados.
Véase get_theme_color() para más detalles.
bool has_theme_constant_override(name: StringName) const 🔗
Devuelve true si existe una sobrescritura local para una constante de tema con el name especificado en este nodo Control.
Véase add_theme_constant_override().
bool has_theme_font(name: StringName, theme_type: StringName = &"") const 🔗
Devuelve true si hay un Theme coincidente en el árbol que tiene un elemento de fuente con el name y el theme_type especificados.
Véase get_theme_color() para más detalles.
bool has_theme_font_override(name: StringName) const 🔗
Devuelve true si hay una sobrescritura local para una Font de tema con el name especificado en este nodo Control.
Véase add_theme_font_override().
bool has_theme_font_size(name: StringName, theme_type: StringName = &"") const 🔗
Devuelve true si hay un Theme coincidente en el árbol que tiene un elemento de tamaño de fuente con el name y el theme_type especificados.
Véase get_theme_color() para más detalles.
bool has_theme_font_size_override(name: StringName) const 🔗
Devuelve true si hay una sobrescritura local para un tamaño de fuente de tema con el name especificado en este nodo Control.
Véase add_theme_font_size_override().
bool has_theme_icon(name: StringName, theme_type: StringName = &"") const 🔗
Devuelve true si hay un Theme coincidente en el árbol que tiene un elemento de icono con el name y el theme_type especificados.
Véase get_theme_color() para más detalles.
bool has_theme_icon_override(name: StringName) const 🔗
Devuelve true si hay una sobrescritura local para un icono de tema con el name especificado en este nodo Control.
Véase add_theme_icon_override().
bool has_theme_stylebox(name: StringName, theme_type: StringName = &"") const 🔗
Devuelve true si hay un Theme coincidente en el árbol que tiene un elemento de stylebox con el name y el theme_type especificados.
Véase get_theme_color() para más detalles.
bool has_theme_stylebox_override(name: StringName) const 🔗
Devuelve true si hay una sobrescritura local para un StyleBox de tema con el name especificado en este nodo Control.
Véase add_theme_stylebox_override().
bool is_drag_successful() const 🔗
Devuelve true si una operación de arrastre es exitosa. Alternativa a Viewport.gui_is_drag_successful().
Mejor usado con Node.NOTIFICATION_DRAG_END.
Devuelve true si el diseño es de derecha a izquierda. Véase también layout_direction.
void release_focus() 🔗
Give up the focus. No other control will be able to receive input.
void remove_theme_color_override(name: StringName) 🔗
Removes a local override for a theme Color with the specified name previously added by add_theme_color_override() or via the Inspector dock.
void remove_theme_constant_override(name: StringName) 🔗
Removes a local override for a theme constant with the specified name previously added by add_theme_constant_override() or via the Inspector dock.
void remove_theme_font_override(name: StringName) 🔗
Removes a local override for a theme Font with the specified name previously added by add_theme_font_override() or via the Inspector dock.
void remove_theme_font_size_override(name: StringName) 🔗
Removes a local override for a theme font size with the specified name previously added by add_theme_font_size_override() or via the Inspector dock.
void remove_theme_icon_override(name: StringName) 🔗
Removes a local override for a theme icon with the specified name previously added by add_theme_icon_override() or via the Inspector dock.
void remove_theme_stylebox_override(name: StringName) 🔗
Removes a local override for a theme StyleBox with the specified name previously added by add_theme_stylebox_override() or via the Inspector dock.
void reset_size() 🔗
Restablece el tamaño a get_combined_minimum_size(). Esto equivale a llamar a set_size(Vector2()) (o cualquier tamaño por debajo del mínimo).
void set_anchor(side: Side, anchor: float, keep_offset: bool = false, push_opposite_anchor: bool = true) 🔗
Establece el anclaje para el Side especificado en anchor. Un método setter para anchor_bottom, anchor_left, anchor_right y anchor_top.
Si keep_offset es true, los offsets no se actualizarán después de esta operación.
Si push_opposite_anchor es true y el anclaje opuesto se superpone a este anclaje, el opuesto tendrá su valor sobrescrito. Por ejemplo, al establecer el anclaje izquierdo en 1 y el anclaje derecho tiene un valor de 0.5, el anclaje derecho también obtendrá un valor de 1. Si push_opposite_anchor fuera false, el anclaje izquierdo obtendría el valor 0.5.
void set_anchor_and_offset(side: Side, anchor: float, offset: float, push_opposite_anchor: bool = false) 🔗
Funciona igual que set_anchor(), pero en lugar del argumento keep_offset y la actualización automática del dessplazamiento, te permite establecer el desplazamiento tú mismo (véase set_offset()).
void set_anchors_and_offsets_preset(preset: LayoutPreset, resize_mode: LayoutPresetMode = 0, margin: int = 0) 🔗
Establece tanto el preset del ancla como el preset del desplazamiento. Véase set_anchors_preset() y set_offsets_preset().
void set_anchors_preset(preset: LayoutPreset, keep_offsets: bool = false) 🔗
Establece los anclajes a un preset del enum LayoutPreset. Esto es el equivalente en código a usar el menú de Layout en el editor 2D.
Si keep_offsets es true, la posición del control también se actualizará.
void set_begin(position: Vector2) 🔗
Establece offset_left y offset_top al mismo tiempo. Equivale a cambiar position.
void set_drag_forwarding(drag_func: Callable, can_drop_func: Callable, drop_func: Callable) 🔗
Establece los callables dados para ser usados en lugar de los métodos virtuales de arrastrar y soltar propios del control. Si un callable está vacío, su respectivo método virtual se usa de forma normal.
Los argumentos para cada callable deben ser exactamente los mismos que sus respectivos métodos virtuales, que serían:
drag_funccorresponde a _get_drag_data() y requiere un Vector2;can_drop_funccorresponde a _can_drop_data() y requiere tanto un Vector2 como un Variant;drop_funccorresponde a _drop_data() y requiere tanto un Vector2 como un Variant.
void set_drag_preview(control: Control) 🔗
Shows the given control at the mouse pointer. A good time to call this method is in _get_drag_data(). The control must not be in the scene tree. You should not free the control, and you should not keep a reference to the control beyond the duration of the drag. It will be deleted automatically after the drag has ended.
@export var color = Color(1, 0, 0, 1)
func _get_drag_data(position):
# Use a control that is not in the tree
var cpb = ColorPickerButton.new()
cpb.color = color
cpb.size = Vector2(50, 50)
set_drag_preview(cpb)
return color
[Export]
private Color _color = new Color(1, 0, 0, 1);
public override Variant _GetDragData(Vector2 atPosition)
{
// Use a control that is not in the tree
var cpb = new ColorPickerButton();
cpb.Color = _color;
cpb.Size = new Vector2(50, 50);
SetDragPreview(cpb);
return _color;
}
void set_end(position: Vector2) 🔗
Establece offset_right y offset_bottom al mismo tiempo.
void set_focus_neighbor(side: Side, neighbor: NodePath) 🔗
Sets the focus neighbor for the specified Side to the Control at neighbor node path. A setter method for focus_neighbor_bottom, focus_neighbor_left, focus_neighbor_right and focus_neighbor_top.
void set_global_position(position: Vector2, keep_offsets: bool = false) 🔗
Establece la global_position a la position dada.
Si keep_offsets es true, los anclajes del control se actualizarán en lugar de los desplazamientos.
void set_offset(side: Side, offset: float) 🔗
Establece el offset para el Side especificado en offset. Un método setter para offset_bottom, offset_left, offset_right y offset_top.
void set_offsets_preset(preset: LayoutPreset, resize_mode: LayoutPresetMode = 0, margin: int = 0) 🔗
Establece los offsets a un preset del enum LayoutPreset. Esto es el equivalente en código a usar el menú de Layout en el editor 2D.
Usa el parámetro resize_mode con constantes del enum LayoutPresetMode para determinar mejor el tamaño resultante del Control. El tamaño constante será ignorado si se usa con presets que cambian el tamaño, p. ej. PRESET_LEFT_WIDE.
Usa el parámetro margin para determinar el espacio entre el Control y los bordes.
void set_position(position: Vector2, keep_offsets: bool = false) 🔗
Establece la position a la position dada.
Si keep_offsets es true, los anclajes del control se actualizarán en lugar de los desplazamientos.
void set_size(size: Vector2, keep_offsets: bool = false) 🔗
Establece el tamaño (véase size).
Si keep_offsets es true, los anclajes del control se actualizarán en lugar de los desplazamientos.
void update_minimum_size() 🔗
Invalidates the size cache in this node and in parent nodes up to top level. Intended to be used with get_minimum_size() when the return value is changed. Setting custom_minimum_size directly calls this method automatically.
void warp_mouse(position: Vector2) 🔗
Mueve el cursor del ratón a position, relativo a position de este Control.
Nota: warp_mouse() solo es compatible con Windows, macOS y Linux. No tiene ningún efecto en Android, iOS y Web.