css - 如何在 Gtk3 可选标签中设置光标颜色?

标签 css perl gtk3

我有一个使用 Gtk3 用 Perl 编写的程序,我在其中创建了一个我希望用户能够从中复制的可选标签。默认情况下,Gtk3 似乎假定用户希望使用键盘进行选择,因此每当您单击标签时它都会显示一个光标/插入符号。有没有一种方法可以将光标的颜色更改为不太明显的颜色或使其完全不可见,就像通常发生的情况一样,例如在 Firefox 中用于非输入字段?

我在 4 年前在这里看到了一个类似的问题,有人建议使用 override_cursorset_style 但现在 Gtk 3.24 似乎都已弃用。我尝试使用自定义 caret-color 属性定义 CSS 样式,但它似乎只适用于 Entry 小部件而不适用于可选择的标签。无论是为所有类 * 还是仅为 label 定义自定义插入符号颜色,我都会得到这种行为。其他 CSS 属性,例如 background-color 似乎工作正常。

一个额外的问题:Gtk3 引用手册建议使用 GTK_STYLE_PROVIDER_PRIORITY_FALLBACKGTK_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();

最佳答案

您可以使用 gtk_style_context_add_class() 将自定义类添加到您的标签中.例如:

use strict;
use warnings;
use Glib qw(TRUE FALSE);
use Gtk3 -init;

my $window = Gtk3::Window->new('toplevel');
$window->signal_connect( destroy  => sub { Gtk3->main_quit() } );
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 $stylecontext = $label->get_style_context();
$stylecontext->add_class("my_label");
my $style = ".my_label { caret-color: transparent; }";
my $css = Gtk3::CssProvider->new();
$css->load_from_data($style);
$stylecontext->add_provider($css, Gtk3::STYLE_PROVIDER_PRIORITY_USER);
$window->add($box);
$window->show_all;
Gtk3->main();

这也展示了如何获取常量 GTK_STYLE_PROVIDER_PRIORITY_USER 的值。

关于css - 如何在 Gtk3 可选标签中设置光标颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68973667/

相关文章:

css - 在流体 SVG 中保持背景图像纵横比的问题

html - 用按钮替换 ul 子弹

javascript - 将大 div 适合小 div 并保持比率 : absolute elements

gtk3 - 包裹的 GtkLabel 巨大的高度

c - Gtk+3 如何指定堆栈的子属性

javascript - 如果输入了正确的信息,我怎样才能使按钮亮起?

regex - ack - 搜索多个模式(逻辑与)

perl - 快速 perl 签名处理程序

python - 删除一定大小的所有文件

c - 如何检测 GtkTextBuffer 中的文本何时被替换而不是先删除后插入?