GTK 3(3.16及以上)如何正确设置文本光标颜色?
在GTK 3中设置文本光标颜色的正确方法
在GTK 3中,旧的GtkWidget:cursor-color样式属性已被弃用,官方推荐使用标准CSS的caret-color属性来设置文本光标(I-beam)的颜色,该属性在GTK 3.20及以上版本中生效。
具体实现步骤:
编写CSS样式
针对文本输入控件(如GtkEntry、GtkTextView)直接设置caret-color,同时搭配深色背景和白色文本的样式:/* 单行输入框样式 */ GtkEntry { background-color: #000000; color: #ffffff; caret-color: #ffffff; /* 设置光标为白色 */ } /* 多行文本框样式 */ GtkTextView { background-color: #000000; color: #ffffff; caret-color: #ffffff; }加载并应用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
相关产品推荐
相关产品推荐

