【发布时间】:2021-08-29 14:01:31
【问题描述】:
我有一个使用 Gtk3 用 Perl 编写的程序,我在其中创建了一个我希望用户能够从中复制的可选标签。默认情况下,Gtk3 似乎假设用户想要使用键盘进行选择,因此每当您单击标签时它都会显示光标/插入符号。有没有一种方法可以将光标的颜色更改为不太明显的颜色或使其完全不可见,就像通常发生的情况一样,例如在 Firefox 中用于非输入字段?
我从 4 年前在这里看到了一个类似的问题,有人建议使用 override_cursor 或 set_style 但现在使用 Gtk 3.24 似乎都已弃用。我尝试使用自定义 caret-color 属性定义 CSS 样式,但它似乎仅适用于 Entry 小部件,不适用于可选标签。无论我为所有类* 或仅为label 定义自定义插入符号颜色,我都会得到这种行为。其他 CSS 属性,例如 background-color 似乎工作正常。
一个额外的问题:Gtk3 参考手册建议使用GTK_STYLE_PROVIDER_PRIORITY_FALLBACK 和GTK_STYLE_PROVIDER_PRIORITY_USER 之间的值作为add_provider 的第二个参数。如何在 Perl 中编写这些常量?我尝试了 GTK_STYLE_PROVIDER_PRIORITY_FALLBACK 带和不带引号、"style-provider-priority-fallback"、"priority-fallback" 和许多其他组合,但 Perl 似乎都无法识别。
这是到目前为止我的代码的相关部分:
#!/usr/bin/perl
use Gtk3 -init;
my $window = Gtk3::Window->new('toplevel');
my $box = Gtk3::Box->new('horizontal',0);
my $label = Gtk3::Label->new();
$label->set_selectable(TRUE);
$label->set_label("Testing");
$box->pack_start($label, FALSE, FALSE, 5);
my $style = "* { caret-color: transparent; }";
my $css = Gtk3::CssProvider->new();
$css->load_from_data($style);
my $stylecontext = $label->get_style_context();
$stylecontext->add_provider($css,1);
$window->add($box);
$window->show_all;
Gtk3->main();
【问题讨论】: