我正在尝试使用 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
在 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
问候