You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GTK 3(3.16及以上)如何正确设置文本光标颜色?

在GTK 3中设置文本光标颜色的正确方法

在GTK 3中,旧的GtkWidget:cursor-color样式属性已被弃用,官方推荐使用标准CSS的caret-color属性来设置文本光标(I-beam)的颜色,该属性在GTK 3.20及以上版本中生效。

具体实现步骤:

  1. 编写CSS样式
    针对文本输入控件(如GtkEntry、GtkTextView)直接设置caret-color,同时搭配深色背景和白色文本的样式:

    /* 单行输入框样式 */
    GtkEntry {
        background-color: #000000;
        color: #ffffff;
        caret-color: #ffffff; /* 设置光标为白色 */
    }
    
    /* 多行文本框样式 */
    GtkTextView {
        background-color: #000000;
        color: #ffffff;
        caret-color: #ffffff;
    }
    
  2. 加载并应用CSS
    将上述CSS保存为文件(比如dark_theme.css),然后在代码中通过Gtk.CssProvider加载并应用到程序中:
    以Python为例:

    from gi.repository import Gtk, Gdk
    
    def load_css():
        css_provider = Gtk.CssProvider()
        # 加载本地CSS文件
        css_provider.load_from_path("dark_theme.css")
        # 获取当前屏幕并应用样式
        screen = Gdk.Screen.get_default()
        style_context = Gtk.StyleContext()
        style_context.add_provider_for_screen(
            screen,
            css_provider,
            Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
        )
    
    if __name__ == "__main__":
        load_css()
        # 初始化GTK程序
        window = Gtk.Window(title="Dark Theme Example")
        entry = Gtk.Entry()
        window.add(entry)
        window.connect("destroy", Gtk.main_quit)
        window.show_all()
        Gtk.main()
    

注意事项:

  • 确认你的GTK 3版本≥3.20,caret-color是从该版本开始支持的标准CSS属性
  • 避免使用已弃用的cursor-color或override_cursor方法,这些接口已不再被维护
  • 如果需要对特定控件单独设置光标颜色,只需在CSS中指定对应的控件类或名称即可

内容的提问来源于stack exchange,提问作者chang zhao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 21:33:14