Gtk 获取股票ID的图标名称? 问题:
我正在尝试检索与给定(字符串)Gtk股票ID对应的(字符串)图标名称 例子 Gtk股票id“Gtk前进”有两个对应的图标名称,“Gtk前进ltr”和“Gtk前进rtl”。我想检索以下任一项:Gtk 获取股票ID的图标名称? 问题:,gtk,Gtk,我正在尝试检索与给定(字符串)Gtk股票ID对应的(字符串)图标名称 例子 Gtk股票id“Gtk前进”有两个对应的图标名称,“Gtk前进ltr”和“Gtk前进rtl”。我想检索以下任一项: 给定ID为“gtk前进”的图标名称“gtk前进ltr”和“gtk前进rtl”或 只需图标名“gtk前进ltr”(适合我的文字方向的图标名) 潜在限制 我使用的是gobject内省API,而不是基本的C API 理由(可选阅读) 我正在尝试为股票ID指定的图标创建一个更大的图标,但大小更大(96像素) 我
- 给定ID为“gtk前进”的图标名称“gtk前进ltr”和“gtk前进rtl”或
- 只需图标名“gtk前进ltr”(适合我的文字方向的图标名)
gtk前进到上面的第二种方法会生成“缺少的图标”图标,因为它不是有效的图标名称)
在上图中,顶部图标使用第一种方法(带有render_图标的股票ID),底部图标使用第二种方法(直接使用图标名称)。清晰度差异很大。GTK_图标大小_对话框
(GTK.IconSize.DIALOG
在Javascript中)小于96px。渲染一个小图标,然后将其放大;很自然,它看起来会很糟糕
我记得,值-1
返回图标的原始大小。然后,您可以使用St.Icon设置要绘制它的大小,因为这似乎是您无论如何都要使用它的方式。常规股票图标名称
这个问题现在有点老了,但供将来参考:最好使用“下一步”
,而不是“gtk前进”
——根据,这是正确的名称,建议使用,因为gtk开发人员正计划使用
为了直接回答标题中所述的问题:下面是一个例子,给出了GTK股票图标的等效图标规范名称
GTK图标的非模糊大版本
至于获得默认图标的非模糊版本,我发现在GTK中以96px渲染图标的最好方法是将其加载到GdkPixbuf
,然后使用它,而不是GtkIcon
(限制为48px,正如j_um指出的那样,这是最大的GtkIconSize
)。如何在Vala中执行此操作的示例(很容易转换为JS或Python等):
您可能还想尝试使用Gtk.IconLookupFlags.FORCE_SIZE
和/或FORCE_SVG
,特别是如果您想要非常大的图标
恐怕我从未使用过Shell工具包,所以我不知道您是否特别需要St.Icon
,但在普通GTK中,您可以在几乎任何可以使用股票图标的地方使用GdkPixbuf
,因此我发现这是一个非常有用的解决方法
let style = Gtk.Widget.get_default_style();
let iconset = style.lookup_icon_set('gtk-go-forward');
let icon = new St.Icon({
gicon: iconset.render_icon(gtkStyle, Gtk.TextDirection.LTR,
Gtk.StateType.NORMAL, Gtk.IconSize.DIALOG,
null, null),
icon_type: St.IconType.FULLCOLOR,
icon_size: 96
});
let icon = new St.Icon({
gicon: Gio.ThemedIcon.new_with_default_fallbacks('gtk-go-forward-ltr'),
icon_type: St.IconType.FULLCOLOR,
icon_size: 96
});
var icon_theme = Gtk.IconTheme.get_default();
try {
var pixbuf = icon_theme.load_icon("go-next", 96, Gtk.IconLookupFlags.USE_BUILTIN);
// Do something with the pixbuf, for example use it with a CellRendererPixbuf,
// or a GtkButton or whatever
catch (GLib.Error e) {
GLib.critical("Could not load icon: %s", e.message);
}