我正在使用 gjs 开发 GNOME Shell 扩展。目前,我将 panelMenu.Button 图标设置为:
class MenuButton extends PanelMenu.Button {
...
...
setIcon() {
const icon_class = ICON_CLASS[this._settings.get_enum("icon")];
this.icon = new St.Icon({
style_class: icon_class,
});
this.add_actor(this.icon);
}
...
}
当设置信号触发变化时:
this._settingsC = this._settings.connect("changed", () => this.resetIcon());
和resetIcon()是:
resetIcon() {
this.remove(this.icon)
const icon_class = ICON_CLASS[this._settings.get_enum("icon")];
this.icon = new St.Icon({
style_class: icon_class,
});
this.add_actor(this.icon);
}
但它不会在运行时更改/重新渲染图标,如果我重新加载扩展,则更改仅在那时可见。
如何在运行时更改图标?