如何在 PyGObject 中使用 Gtk 4 中的 CSS?

问题描述 投票:0回答:1

我正在尝试使用 PyGObject 和 Gtk 4.0 创建一个小应用程序。所有其他答案都适用于 Gtk 3 或更低版本,尝试它们给了我一个错误。

我尝试了这段代码:

css = '* { background-color: #f00; }' # temporary css
css_provider = Gtk.CssProvider()
css_provider.load_from_data(css)
context = Gtk.StyleContext()
screen = Gdk.Screen.get_default()
context.add_provider_for_screen(screen, css_provider,
                                Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

但是它扔掉了

'gi.repository.Gdk' object has no attribute 'Screen'

如果重要的话,这是我的进口:

import gi

gi.require_version('Gtk', '4.0')
from gi.repository import Gtk, Gdk
python gtk pygobject gtk4
1个回答
0
投票

在 GTK4 中,“屏幕”属性不再可用。这也意味着错误消息。

在其位置使用“显示”。

在我更喜欢的 C 语言中,这可能看起来像这样:

  GtkCssProvider *provider;
    GdkDisplay *display;

    provider = gtk_css_provider_new();
    display = gdk_display_get_default();

    gtk_style_context_add_provider_for_display(display, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

    const gchar *css_file = "style.css";

    gtk_css_provider_load_from_file(provider, g_file_new_for_path(css_file));

    g_object_unref(provider);

另请参阅问题和答案:

https://stackoverflow.com/a/78749667/22768315

问候

© www.soinside.com 2019 - 2024. All rights reserved.