Button 影响GTK中聚焦按钮的样式

Button 影响GTK中聚焦按钮的样式,button,user-interface,gtk,focus,Button,User Interface,Gtk,Focus,我在应用程序中使用了很多按钮(比如拨号板),用户可以选择用鼠标单击任何按钮,或者使用光标箭头键将焦点放在想要的按钮上(然后按Enter键按下按钮)。但不幸的是,按钮的焦点样式不是很明显。按钮框上只有一条细细的红线 因为我有很多按钮,而且我的按钮也相当大(这是一个儿童应用程序),这个“不引人注目”的焦点标记不符合我的口味。我想有一些更明显的,也许细细的红线应该更粗,或者按钮的背景(显示文本或图标)应该改变。任何其他关于如何使这更像是一种眼睛跳跃的想法都将不胜感激 示例代码(在Python中,但使用

我在应用程序中使用了很多按钮(比如拨号板),用户可以选择用鼠标单击任何按钮,或者使用光标箭头键将焦点放在想要的按钮上(然后按Enter键按下按钮)。但不幸的是,按钮的焦点样式不是很明显。按钮框上只有一条细细的红线

因为我有很多按钮,而且我的按钮也相当大(这是一个儿童应用程序),这个“不引人注目”的焦点标记不符合我的口味。我想有一些更明显的,也许细细的红线应该更粗,或者按钮的背景(显示文本或图标)应该改变。任何其他关于如何使这更像是一种眼睛跳跃的想法都将不胜感激

示例代码(在Python中,但使用GTK的其他语言的解决方案也应该这样做,因此我特意不将此问题标记为Python):


另外,我想知道我是否需要对每个按钮做任何必要的操作?或者是否存在影响所有光学焦点标记的一般性因素?

您可以使用以下方法影响全部或部分应用程序的样式:


你知道我必须在Python(pygtk)中导入什么才能拥有你所指的
Gtk
?我通常只导入
gtk
,它既不提供
CssProvider
也不提供
StyleContext
,也不提供STYLE\u CONTEXT\u PRIORITY\u应用程序
。我正在使用
pygtk`2.24.10 btw,以防万一这很重要。啊哈,我没注意到你在使用旧的
pygtk
。你可能可以做一些事情,但老实说,我不认为你可以改变焦点矩形在所有GTK 2。任何其他使焦点更明显,也适合我的罚款。我现在有一个骇人的背景变化时,获得和失去重点;它可以工作并以淡绿色突出显示聚焦按钮,但我认为它可以做得更好;然后在按钮的expose事件处理程序中,在按钮上绘制一个额外的指示器。
#!/usr/bin/env python

import pygtk
pygtk.require('2.0')
import gtk

def init():
    window = gtk.Window(gtk.WINDOW_TOPLEVEL)
    table = gtk.Table(2, 1)
    button1 = gtk.Button("Hello")
    button2 = gtk.Button("World")
    table.attach(button1, 0, 1, 0, 1)
    table.attach(button2, 1, 2, 0, 1)
    window.add(table)
    button1.show()
    button2.show()
    table.show()
    window.show()

if __name__ == "__main__":
    init()
    gtk.main()
provider = Gtk.CssProvider()
provider.load_from_data('''
    GtkButton {
        -GtkWidget-focus-line-width: 3px;
    }
''')
Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), provider,
    Gtk.STYLE_CONTEXT_PRIORITY_APPLICATION)