【问题标题】:Perl/Gtk3, add a background image to a windowPerl/Gtk3,给窗口添加背景图片
【发布时间】:2019-03-07 18:01:03
【问题描述】:

我正在尝试向窗口添加背景图像。使用 CSS 样式,很简单,但我只想将图像添加到单个窗口,而不是全部。

下面的脚本创建了两个 Gtk 窗口,一个带有 CSS,另一个没有。它不起作用,因为 CSS 样式被添加到两个窗口。

我很乐意为 Gtk3::Frame 或 Gtk3::Box 添加背景图像,甚至完全避免使用 CSS,但我无法让这些方法中的任何一个起作用。

我认为代码几乎是正确的,因为它确实只为一个 Gtk3::TextView(但不是两个)添加背景图像。

#!/usr/bin/perl
package bgtest;

use strict;
use diagnostics;
use warnings;

use Gtk3 '-init';
use Glib qw(TRUE FALSE);
use Cairo;

&drawWin(FALSE);
&drawWin(TRUE);

Gtk3->main();

sub drawWin {

    my ($cssFlag) = @_;

    my $window = Gtk3::Window->new('toplevel');
    $window->set_position('center');
    $window->set_default_size(400, 300);
    $window->signal_connect('delete-event' => sub {

        Gtk3->main_quit();
        exit;
    });

    if ($cssFlag) {

        # Set up the window's background image using a CSS style
        $window->set_title('CSS ON');

        my $imagePath = "/home/YOURNAME/bg.png";

        my $provider = Gtk3::CssProvider->new();
        my $display = Gtk3::Gdk::Display::get_default();
        my $screen = Gtk3::Gdk::Display::get_default_screen($display);
        Gtk3::StyleContext::add_provider_for_screen($screen, $provider, 600);

        my $theming = "#my_win_id, window.background {\n";
        $theming .= "   background-image: url(\"$imagePath\");\n";
        $theming .= "   background-repeat: repeat;\n";
        $theming .= "   background-position: top left;\n";
        $theming .= "}";

        $provider->load_from_data ([map ord, split //, $theming]);

        my $context = $window->get_style_context();
        $context->add_provider($provider, 600);

    } else {

        # Don't use a background image
        $window->set_title('CSS OFF');
    }

    $window->show_all();

    return $window;
}

【问题讨论】:

    标签: css perl gtk3


    【解决方案1】:

    我正在尝试向窗口添加背景图像。使用 CSS 样式, 它很简单,但我只想将图像添加到单个 窗口,而不是全部。

    只需删除屏幕提供程序(并保留窗口提供程序)。所以注释掉这一行:

    Gtk3::StyleContext::add_provider_for_screen($screen, $provider, 600);
    

    【讨论】:

    • 感谢 Håkon,你是最棒的!
    猜你喜欢
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    相关资源
    最近更新 更多