NativeMenu

继承: Object

操作系统本机菜单的服务器接口。

描述

NativeMenu处理对 OS 原生全局菜单栏和弹出菜单的低级访问。

注意:这是低级 API,请考虑使用将MenuBar.prefer_global_menu设置为trueMenuBar,和将PopupMenu.prefer_native_menu设置为truePopupMenu

要创建菜单,请使用create_menu(),使用add_*_item方法添加菜单项。要删除菜单,请使用free_menu()

var menu

func _menu_callback(item_id):
    if item_id == "ITEM_CUT":
        cut()
    elif item_id == "ITEM_COPY":
        copy()
    elif item_id == "ITEM_PASTE":
        paste()

func _enter_tree():
    # 创建新菜单并添加物品:
    menu = NativeMenu.create_menu()
    NativeMenu.add_item(menu, "Cut", _menu_callback, Callable(), "ITEM_CUT")
    NativeMenu.add_item(menu, "Copy", _menu_callback, Callable(), "ITEM_COPY")
    NativeMenu.add_separator(menu)
    NativeMenu.add_item(menu, "Paste", _menu_callback, Callable(), "ITEM_PASTE")

func _on_button_pressed():
    # 在鼠标所在位置显示弹出菜单:
    NativeMenu.popup(menu, DisplayServer.mouse_get_position())

func _exit_tree():
    # 当不再需要该菜单时将其移除:
    NativeMenu.free_menu(menu)

方法

int

add_check_item(rid: RID, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

add_icon_check_item(rid: RID, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

add_icon_item(rid: RID, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

add_icon_radio_check_item(rid: RID, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

add_item(rid: RID, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

add_multistate_item(rid: RID, label: String, max_states: int, default_state: int, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

add_radio_check_item(rid: RID, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

add_separator(rid: RID, index: int = -1)

int

add_submenu_item(rid: RID, label: String, submenu_rid: RID, tag: Variant = null, index: int = -1)

void

clear(rid: RID)

RID

create_menu()

int

find_item_index_with_submenu(rid: RID, submenu_rid: RID) const

int

find_item_index_with_tag(rid: RID, tag: Variant) const

int

find_item_index_with_text(rid: RID, text: String) const

void

free_menu(rid: RID)

Key

get_item_accelerator(rid: RID, idx: int) const

Callable

get_item_callback(rid: RID, idx: int) const

int

get_item_count(rid: RID) const

Texture2D

get_item_icon(rid: RID, idx: int) const

int

get_item_indentation_level(rid: RID, idx: int) const

Callable

get_item_key_callback(rid: RID, idx: int) const

int

get_item_max_states(rid: RID, idx: int) const

int

get_item_state(rid: RID, idx: int) const

RID

get_item_submenu(rid: RID, idx: int) const

Variant

get_item_tag(rid: RID, idx: int) const

String

get_item_text(rid: RID, idx: int) const

String

get_item_tooltip(rid: RID, idx: int) const

float

get_minimum_width(rid: RID) const

Callable

get_popup_close_callback(rid: RID) const

Callable

get_popup_open_callback(rid: RID) const

Vector2

get_size(rid: RID) const

RID

get_system_menu(menu_id: SystemMenus) const

String

get_system_menu_name(menu_id: SystemMenus) const

bool

has_feature(feature: Feature) const

bool

has_menu(rid: RID) const

bool

has_system_menu(menu_id: SystemMenus) const

bool

is_item_checkable(rid: RID, idx: int) const

bool

is_item_checked(rid: RID, idx: int) const

bool

is_item_disabled(rid: RID, idx: int) const

bool

is_item_hidden(rid: RID, idx: int) const

bool

is_item_radio_checkable(rid: RID, idx: int) const

bool

is_opened(rid: RID) const

bool

is_system_menu(rid: RID) const

void

popup(rid: RID, position: Vector2i)

void

remove_item(rid: RID, idx: int)

void

set_interface_direction(rid: RID, is_rtl: bool)

void

set_item_accelerator(rid: RID, idx: int, keycode: Key)

void

set_item_callback(rid: RID, idx: int, callback: Callable)

void

set_item_checkable(rid: RID, idx: int, checkable: bool)

void

set_item_checked(rid: RID, idx: int, checked: bool)

void

set_item_disabled(rid: RID, idx: int, disabled: bool)

void

set_item_hidden(rid: RID, idx: int, hidden: bool)

void

set_item_hover_callbacks(rid: RID, idx: int, callback: Callable)

void

set_item_icon(rid: RID, idx: int, icon: Texture2D)

void

set_item_indentation_level(rid: RID, idx: int, level: int)

void

set_item_key_callback(rid: RID, idx: int, key_callback: Callable)

void

set_item_max_states(rid: RID, idx: int, max_states: int)

void

set_item_radio_checkable(rid: RID, idx: int, checkable: bool)

void

set_item_state(rid: RID, idx: int, state: int)

void

set_item_submenu(rid: RID, idx: int, submenu_rid: RID)

void

set_item_tag(rid: RID, idx: int, tag: Variant)

void

set_item_text(rid: RID, idx: int, text: String)

void

set_item_tooltip(rid: RID, idx: int, tooltip: String)

void

set_minimum_width(rid: RID, width: float)

void

set_popup_close_callback(rid: RID, callback: Callable)

void

set_popup_open_callback(rid: RID, callback: Callable)


枚举

enum Feature: 🔗

Feature FEATURE_GLOBAL_MENU = 0

NativeMenu支持原生全局主菜单。

Feature FEATURE_POPUP_MENU = 1

NativeMenu支持原生弹出菜单。

Feature FEATURE_OPEN_CLOSE_CALLBACK = 2

NativeMenu支持菜单打开和关闭回调。

Feature FEATURE_HOVER_CALLBACK = 3

NativeMenu支持菜单项悬停回调。

Feature FEATURE_KEY_CALLBACK = 4

NativeMenu支持菜单项加速器/键回调。


enum SystemMenus: 🔗

SystemMenus INVALID_MENU_ID = 0

无效的特殊系统菜单ID。

SystemMenus MAIN_MENU_ID = 1

全局主菜单ID。

SystemMenus APPLICATION_MENU_ID = 2

应用程序(macOS上“Apple”菜单之后的第一个菜单)菜单ID。

SystemMenus WINDOW_MENU_ID = 3

“窗口”菜单ID(在macOS上,此菜单包括标准窗口控制项和打开窗口列表)。

SystemMenus HELP_MENU_ID = 4

“帮助”菜单ID(在macOS上,此菜单包括帮助搜索栏)。

SystemMenus DOCK_MENU_ID = 5

Dock图标右键单击菜单ID(在macOS上,此菜单包括标准应用程序控制项和打开窗口列表)。


方法说明

int add_check_item(rid: RID, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

添加一个新的带有文本label的可检查项到全局菜单rid

返回插入项的索引,不保证与index值相同。

可以选择定义accelerator,这是一个键盘快捷键,即使它当前没有打开,也可以按下它来触发菜单按钮。accelerator通常是KeyModifierMaskKey的组合,使用按位或,例如KEY_MASK_CTRL|KEY_ACtrl+A)。

注意:callbackkey_callbackCallables需要只接受一个Variant参数,传递给Callables的参数将是传递给tag的值。

注意:此方法在macOS和Windows上实现。

注意:在Windows上,acceleratorkey_callback被忽略。


int add_icon_check_item(rid: RID, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

将带有文本label和图标icon的新可检查项添加到全局菜单rid

返回插入项的索引,不保证与index值相同。

可以选择定义accelerator,这是一个键盘快捷键,即使它当前没有打开,也可以按下它来触发菜单按钮。accelerator通常是KeyModifierMaskKey的组合,使用按位或,例如KEY_MASK_CTRL|KEY_ACtrl+A)。

注意:callbackkey_callbackCallables需要只接受一个Variant参数,传递给Callables的参数将是传递给tag的值。

注意:此方法在macOS和Windows上实现。

注意:在Windows上,acceleratorkey_callback被忽略。


int add_icon_item(rid: RID, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

将带有文本label和图标icon的新项目添加到全局菜单rid

返回插入项的索引,不保证与index值相同。

可以选择定义accelerator,这是一个键盘快捷键,即使它当前没有打开,也可以按下它来触发菜单按钮。accelerator通常是KeyModifierMaskKey的组合,使用按位或,例如KEY_MASK_CTRL|KEY_ACtrl+A)。

注意:callbackkey_callbackCallables需要只接受一个Variant参数,传递给Callables的参数将是传递给tag的值。

注意:此方法在macOS和Windows上实现。

注意:在Windows上,acceleratorkey_callback被忽略。


int add_icon_radio_check_item(rid: RID, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

将带有文本label和图标icon的新单选可检查项添加到全局菜单rid

返回插入项的索引,不保证与index值相同。

可以选择定义accelerator,这是一个键盘快捷键,即使它当前没有打开,也可以按下它来触发菜单按钮。accelerator通常是KeyModifierMaskKey的组合,使用按位或,例如KEY_MASK_CTRL|KEY_ACtrl+A)。

注意:单选可检查项目仅显示复选标记,但没有任何内置检查行为,必须手动检查/取消检查。有关如何控制它的更多信息,请参阅set_item_checked()

注意:callbackkey_callbackCallables需要只接受一个Variant参数,传递给Callables的参数将是传递给tag的值。

注意:此方法在macOS和Windows上实现。

注意:在Windows上,acceleratorkey_callback被忽略。


int add_item(rid: RID, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

将带有文本label的新项目添加到全局菜单rid

返回插入项的索引,不保证与index值相同。

可以选择定义accelerator,这是一个键盘快捷键,即使它当前没有打开,也可以按下它来触发菜单按钮。accelerator通常是KeyModifierMaskKey的组合,使用按位或,例如KEY_MASK_CTRL|KEY_ACtrl+A)。

注意:callbackkey_callbackCallables需要只接受一个Variant参数,传递给Callables的参数将是传递给tag的值。

注意:此方法在macOS和Windows上实现。

注意:在Windows上,acceleratorkey_callback被忽略。


int add_multistate_item(rid: RID, label: String, max_states: int, default_state: int, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

将带有文本label的新项目添加到全局菜单rid

与普通的二进制项目相反,多状态项目可以有两个以上的状态,由max_states定义。每次按下或激活项目都会增加一个状态。默认值由default_state定义。

返回插入项的索引,不保证与index值相同。

可以选择定义accelerator,这是一个键盘快捷键,即使它当前没有打开,也可以按下它来触发菜单按钮。accelerator通常是KeyModifierMaskKey的组合,使用按位或,例如KEY_MASK_CTRL|KEY_ACtrl+A)。

注意:默认情况下,没有指示当前项目状态,应该手动更改。

注意:callbackkey_callbackCallables需要只接受一个Variant参数,传递给Callables的参数将是传递给tag的值。

注意:此方法在macOS和Windows上实现。

注意:在Windows上,acceleratorkey_callback被忽略。


int add_radio_check_item(rid: RID, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

将带有文本label的新单选可检查项添加到全局菜单rid

返回插入项的索引,不保证与index值相同。

可以选择定义accelerator,这是一个键盘快捷键,即使它当前没有打开,也可以按下它来触发菜单按钮。accelerator通常是KeyModifierMaskKey的组合,使用按位或,例如KEY_MASK_CTRL|KEY_ACtrl+A)。

注意:单选可检查项目仅显示复选标记,但没有任何内置检查行为,必须手动检查/取消检查。有关如何控制它的更多信息,请参阅set_item_checked()

注意:callbackkey_callbackCallables需要只接受一个Variant参数,传递给Callables的参数将是传递给tag的值。

注意:此方法在macOS和Windows上实现。

注意:在Windows上,acceleratorkey_callback被忽略。


int add_separator(rid: RID, index: int = -1) 🔗

将项目之间的分隔符添加到全局菜单rid。分隔符还占用索引。

返回插入项的索引,不保证与index值相同。

注意:此方法在macOS和Windows上实现。


int add_submenu_item(rid: RID, label: String, submenu_rid: RID, tag: Variant = null, index: int = -1) 🔗

添加将作为全局菜单rid的子菜单的项目。submenu_rid参数是单击项目时将显示的全局菜单的RID。

返回插入项的索引,不保证与index值相同。

注意:此方法在macOS和Windows上实现。


void clear(rid: RID) 🔗

从全局菜单rid中删除所有项目。

注意:此方法在macOS和Windows上实现。


RID create_menu() 🔗

创建一个新的全局菜单对象。

注意:此方法在macOS和Windows上实现。


int find_item_index_with_submenu(rid: RID, submenu_rid: RID) const 🔗

返回具有submenu_rid指定的子菜单的项目的索引。索引由引擎自动分配给每个项目,不能手动设置。

注意:此方法在macOS和Windows上实现。


int find_item_index_with_tag(rid: RID, tag: Variant) const 🔗

返回具有指定tag的项目的索引。索引由引擎自动分配给每个项目,不能手动设置。

注意:此方法在macOS和Windows上实现。


int find_item_index_with_text(rid: RID, text: String) const 🔗

返回具有指定text的项目的索引。索引由引擎自动分配给每个项目,不能手动设置。

注意:此方法在macOS和Windows上实现。


void free_menu(rid: RID) 🔗

释放由thisNativeMenu创建的全局菜单对象。

注意:此方法在macOS和Windows上实现。


Key get_item_accelerator(rid: RID, idx: int) const 🔗

返回索引idx处项目的加速器。加速器是激活项目的键的特殊组合,无论哪个控件被聚焦。

注意:此方法仅在macOS上实现。


Callable get_item_callback(rid: RID, idx: int) const 🔗

返回indexidx处项目的回调。

注意:此方法在macOS和Windows上实现。


int get_item_count(rid: RID) const 🔗

返回全局菜单rid中的项目数。

注意:此方法在macOS和Windows上实现。


Texture2D get_item_icon(rid: RID, idx: int) const 🔗

返回索引idx处项目的图标。

注意:此方法在macOS和Windows上实现。


int get_item_indentation_level(rid: RID, idx: int) const 🔗

返回给定idx处项目的水平偏移量。

注意:此方法仅在macOS上实现。


Callable get_item_key_callback(rid: RID, idx: int) const 🔗

返回索引idx处项目加速器的回调。

注意:此方法仅在macOS上实现。


int get_item_max_states(rid: RID, idx: int) const 🔗

返回多状态项的状态数。有关详细信息,请参见add_multistate_item()

注意:此方法在macOS和Windows上实现。


int get_item_state(rid: RID, idx: int) const 🔗

返回多状态项的状态。有关详细信息,请参见add_multistate_item()

注意:此方法在macOS和Windows上实现。


RID get_item_submenu(rid: RID, idx: int) const 🔗

返回索引idx处项目的子菜单ID。有关如何添加子菜单的更多信息,请参见add_submenu_item()

注意:此方法在macOS和Windows上实现。


Variant get_item_tag(rid: RID, idx: int) const 🔗

返回指定项的元数据,可以是任何类型。您可以使用set_item_tag()进行设置,它提供了一种将上下文数据分配给项的简单方法。

注意:此方法在macOS和Windows上实现。


String get_item_text(rid: RID, idx: int) const 🔗

返回索引idx处项目的文本。

注意:此方法在macOS和Windows上实现。


String get_item_tooltip(rid: RID, idx: int) const 🔗

返回与指定索引idx关联的工具提示。

注意:此方法仅在macOS上实现。


float get_minimum_width(rid: RID) const 🔗

返回全局菜单最小宽度。

注意:此方法仅在macOS上实现。


Callable get_popup_close_callback(rid: RID) const 🔗

返回全局菜单关闭回调。

注意:此方法在macOS和Windows上实现。


Callable get_popup_open_callback(rid: RID) const 🔗

返回全局菜单打开回调。

注意:此方法仅在macOS上实现。


Vector2 get_size(rid: RID) const 🔗

返回全局菜单大小。

注意:此方法在macOS和Windows上实现。


RID get_system_menu(menu_id: SystemMenus) const 🔗

返回特殊系统菜单的RID。

注意:此方法仅在macOS上实现。


String get_system_menu_name(menu_id: SystemMenus) const 🔗

返回特殊系统菜单的可读名称。

注意:此方法仅在macOS上实现。


bool has_feature(feature: Feature) const 🔗

如果当前NativeMenu支持指定的feature,则返回true,否则返回false

注意:此方法在macOS和Windows上实现。


bool has_menu(rid: RID) const 🔗

如果rid是有效的全局菜单,则返回true

注意:此方法在macOS和Windows上实现。


bool has_system_menu(menu_id: SystemMenus) const 🔗

如果支持特殊的系统菜单,则返回true

注意:此方法仅在macOS上实现。


bool is_item_checkable(rid: RID, idx: int) const 🔗

如果索引idx处的项目以某种方式可检查,即如果它有复选框或单选按钮,则返回true

注意:此方法在macOS和Windows上实现。


bool is_item_checked(rid: RID, idx: int) const 🔗

如果选中索引idx处的项目,则返回true

注意:此方法在macOS和Windows上实现。


bool is_item_disabled(rid: RID, idx: int) const 🔗

如果索引idx处的项目被禁用,则返回true。当它被禁用时,它无法被选中,或者它的操作被调用。

有关如何禁用项目的更多信息,请参见set_item_disabled()

注意:此方法在macOS和Windows上实现。


bool is_item_hidden(rid: RID, idx: int) const 🔗

如果索引idx处的项目被隐藏,则返回true

有关如何隐藏项目的更多信息,请参见set_item_hidden()

注意:此方法仅在macOS上实现。


bool is_item_radio_checkable(rid: RID, idx: int) const 🔗

如果索引idx处的项目具有单选按钮样式的可检查性,则返回true

注意:这纯粹是装饰性的;您必须添加检查/取消检查无线电组中的项目的逻辑。

注意:此方法在macOS和Windows上实现。


bool is_opened(rid: RID) const 🔗

如果菜单当前打开,则返回true

注意:此方法仅在macOS上实现。


bool is_system_menu(rid: RID) const 🔗

返回trueis全局菜单是一个特殊的系统菜单。

注意:此方法仅在macOS上实现。


void popup(rid: RID, position: Vector2i) 🔗

在屏幕坐标的position处显示全局菜单。

注意:此方法在macOS和Windows上实现。


void remove_item(rid: RID, idx: int) 🔗

从全局菜单rid中删除indexidx处的项目。

注意:删除项目后的项目索引将移位1。

注意:此方法在macOS和Windows上实现。


void set_interface_direction(rid: RID, is_rtl: bool) 🔗

如果is_rtltrue,则从右到左设置菜单文本布局方向。

注意:此方法在macOS和Windows上实现。


void set_item_accelerator(rid: RID, idx: int, keycode: Key) 🔗

keycode可以是单个Key,也可以是KeyModifierMasks和Keys的组合,使用按位或,例如KEY_MASK_CTRL|KEY_ACtrl+A)。

注意:此方法仅在macOS上实现。


void set_item_callback(rid: RID, idx: int, callback: Callable) 🔗

在indexidx处设置项目的回调。按下项目时会发出回调。

注意:callbackCallable需要只接受一个Variant参数,传递给Callable的参数将是创建菜单项时传递给tag参数的值。

注意:此方法在macOS和Windows上实现。


void set_item_checkable(rid: RID, idx: int, checkable: bool) 🔗

设置indexidx处的项目是否有复选框。如果false,则将项目的类型设置为纯文本。

注意:此方法在macOS和Windows上实现。


void set_item_checked(rid: RID, idx: int, checked: bool) 🔗

在indexidx处设置项目的检查状态。

注意:此方法在macOS和Windows上实现。


void set_item_disabled(rid: RID, idx: int, disabled: bool) 🔗

启用/禁用indexidx处的项目。禁用时,无法选择它,也无法调用它的操作。

注意:此方法在macOS和Windows上实现。


void set_item_hidden(rid: RID, idx: int, hidden: bool) 🔗

隐藏/显示索引idx处的项目。当它被隐藏时,项目不会出现在菜单中,并且无法调用其操作。

注意:此方法仅在macOS上实现。


void set_item_hover_callbacks(rid: RID, idx: int, callback: Callable) 🔗

在indexidx处设置项目的回调。当项目悬停时发出回调。

注意:callbackCallable需要只接受一个Variant参数,传递给Callable的参数将是创建菜单项时传递给tag参数的值。

注意:此方法仅在macOS上实现。


void set_item_icon(rid: RID, idx: int, icon: Texture2D) 🔗

替换指定idxTexture2D图标。

注意:此方法在macOS和Windows上实现。

注意:macOS Dock菜单项不支持此方法。


void set_item_indentation_level(rid: RID, idx: int, level: int) 🔗

设置给定idx处项目的水平偏移量。

注意:此方法仅在macOS上实现。


void set_item_key_callback(rid: RID, idx: int, key_callback: Callable) 🔗

在indexidx处设置项目的回调。当其加速器被激活时发出回调。

注意:key_callbackCallable需要只接受一个Variant参数,传递给Callable的参数将是创建菜单项时传递给tag参数的值。

注意:此方法仅在macOS上实现。


void set_item_max_states(rid: RID, idx: int, max_states: int) 🔗

设置多状态项的状态数。有关详细信息,请参见add_multistate_item()

注意:此方法在macOS和Windows上实现。


void set_item_radio_checkable(rid: RID, idx: int, checkable: bool) 🔗

将指定索引idx处的项目类型设置为单选按钮。如果false,则将项目类型设置为纯文本。

注意:这纯粹是装饰性的;您必须添加检查/取消检查无线电组中的项目的逻辑。

注意:此方法在macOS和Windows上实现。


void set_item_state(rid: RID, idx: int, state: int) 🔗

设置多状态项的状态。有关详细信息,请参见add_multistate_item()

注意:此方法在macOS和Windows上实现。


void set_item_submenu(rid: RID, idx: int, submenu_rid: RID) 🔗

在indexidx处设置项目的子菜单RID。子菜单是单击项目时显示的全局菜单。

注意:此方法在macOS和Windows上实现。


void set_item_tag(rid: RID, idx: int, tag: Variant) 🔗

设置项目的元数据,可以是任何类型。您可以稍后使用get_item_tag()获取它,它提供了一种将上下文数据分配给项目的简单方法。

注意:此方法在macOS和Windows上实现。


void set_item_text(rid: RID, idx: int, text: String) 🔗

在indexidx处设置项目的文本。

注意:此方法在macOS和Windows上实现。


void set_item_tooltip(rid: RID, idx: int, tooltip: String) 🔗

在指定索引idx处设置项目的String工具提示。

注意:此方法仅在macOS上实现。


void set_minimum_width(rid: RID, width: float) 🔗

设置全局菜单的最小宽度。

注意:此方法仅在macOS上实现。


void set_popup_close_callback(rid: RID, callback: Callable) 🔗

寄存器可调用以在菜单即将显示时发出。

注意:操作系统可以模拟菜单打开来跟踪菜单项变化和全局快捷方式,在这种情况下不触发相应的关闭回调。使用is_opened()检查菜单当前是否打开。

注意:此方法在macOS和Windows上实现。


void set_popup_open_callback(rid: RID, callback: Callable) 🔗

可调用的寄存器在菜单关闭后发出。

注意:此方法仅在macOS上实现。