我有一個用Perl撰寫的程式,使用的是Gtk3,我創建了一個可選擇的標簽,我希望用戶能夠從中復制。默認情況下,Gtk3似乎認為用戶想用鍵盤來選擇,所以每當你點擊標簽時,它都會顯示一個游標/圓點。我是否有辦法將游標的顏色改為不那么明顯的顏色,或者使其完全不可見,就像在 Firefox 中非輸入欄位的情況一樣?
我在這里看到了4年前的一個類似問題,有人建議使用override_cursor或set_style,但現在的Gtk 3.24似乎都已經廢棄了。我試著用一個自定義的caret-color屬性來定義一個CSS樣式,但它似乎只對Entry widgets有效,而對可選擇的Labels無效。無論我是為所有的類*還是只為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("測驗")。
$box->pack_start($label, FALSE, FALSE, 5) 。
my $style = "* { caret-color: transparent; }"/span>;
my $css = Gtk3::CssProvider->new()。
$css->load_from_data($style)。
my $stylecontext = $label->get_style_context();
$stylecontext->add_provider($css,1)。
$window->添加($box)。
$window->show_all;
Gtk3->main();
uj5u.com熱心網友回復:
你可以使用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() }; ;$window->new('toplevel') );
my $box = Gtk3::Box->new('horizontal',0) 。
my $label = Gtk3::Label->new()。
$label->set_selectable(TRUE)。
$label->set_label("測驗")。
$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的值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/311350.html
標籤:
