字体族未生效

前端开发 2026-07-07

目前我正在使用GTK4和 Python,基于GNOME Builder为 Python的默认项目来开发一个应用。我的GTKTextView的字体族(font-family)不会改变,尽管该字体已经安装在我的电脑上,且字体大小可以生效。我已经把CodeEditor的 ID指派给TextView,并尝试把字体族的声明移到CodeEditor的声明中。

# ...

# Windows Class definition and definition of the config objectsand it's properties

    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        css = Gtk.CssProvider()
        css.load_from_data(f"""
            .CodeEditor {{
                font-size: {config.CodeEditorFontSize}px;
                background-color: {config.EditorBackgroundColor};
            }}

            .CodeEditor text{{
                font-family: "Jetbrains Mono";
            }}

            window {{
                background-color: {config.EditorBackgroundColor};
            }}
        """.encode())


        Gtk.StyleContext.add_provider_for_display(
            Gdk.Display.get_default(),
            css,
            Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION,
        )

解决方案

css = Gtk.CssProvider()
css.load_from_data(f"""
textview.CodeEditor,
textview.CodeEditor text {{
    font-family: "JetBrains Mono", monospace;
    font-size: {config.CodeEditorFontSize}px;
    background-color: {config.EditorBackgroundColor};
}}
""".encode())

Gtk.StyleContext.add_provider_for_display(
    Gdk.Display.get_default(),
    css,
    Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION,
)

self.textview.add_css_class("CodeEditor")

Builder id is not a CSS class and .CodeEditor only matches if you add that class with add_css_class

我不确定JetBrains Mono(不带大写的B)是否可用。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章