css - 使用 Gtk3 FontChooserDialog 作为 GtkCssProvider 的输入
问题描述
我正在尝试更新我最初为 Gtk3.10 编写的一些旧 Gtk 代码。现在我正在运行 3.24.29 抱怨:
主题解析错误::1:29:使用 Pango 语法作为字体:样式属性已弃用;请使用 CSS 语法
有问题的部分是我调用gtk_css_provider_load_from_data()
并传递了一个 CSS 字符串GtkButton {font: Noto Sans 12;}
。我知道新的写法是button {font-family: Noto Sans; font-size: 12pt;}
.
挑战在于我没有静态指定字体。用户可以在运行时使用GtkFontChooserDialog选择字体。
阅读文档,我认为gtk_font_chooser_get_font_features()
会做我想做的,因为它说:The selected font features, in a format that is compatible with CSS and with Pango attributes.
但是相反,它返回一个空字符串。
这是一个可运行的示例,显示了我的位置:
#!/usr/bin/perl -w
use strict;
use Gtk3 -init;
my $win = Gtk3::Window->new;
$win->signal_connect(destroy => sub {Gtk3::main_quit});
my $btn = Gtk3::Button->new_with_label("Choose font");
my $style = $btn->get_style_context;
my $cssProv = Gtk3::CssProvider->new;
$style->add_provider($cssProv, 800);
$btn->signal_connect(clicked => sub {
my $dialog = Gtk3::FontChooserDialog->new;
if ($dialog->run eq 'ok') {
# What I thought would work by reading GtkFontChooser docs
#$cssProv->load_from_data("button {" . $dialog->get_font_features . "}");
# Sanity check: ignore dialog and make button huge
$cssProv->load_from_data("button {font-family: Segoe Script; font-size: 48pt;}");
}
$dialog->destroy;
});
$win->add($btn);
$win->show_all;
Gtk3->main;
当我用 Perl 编写时,其他语言的示例或指针受到赞赏。
解决方案
推荐阅读
- sql - Rails 加入查询被杀死或太慢。请推荐创建查询的正确方法
- c++ - 以下代码中可能存在赛车情况吗?
- javascript - 如何迭代数组 ini18next 翻译 ejs
- python - 如何在外部覆盖内部方法功能
- mysql - 显示使用 if conding 连接两个表的数据透视表数据
- python - 如何根据包含列名的字段从列中获取值?
- react-native - 为什么我可以添加但不能从集合中删除元素
- java - 如何访问会话属性 ArrayList 中的元素
在 JSP 中 - sql - 有没有办法授予对尚不存在(或重新创建)的表的权限?
- angular - 如何以角度访问组件模板中的服务变量