GTK + widget状态没有更新?

时间:2010-01-19 09:39:13

标签: gtk

在我的应用程序中,我正在尝试使用GTK rc文件来设置小部件的样式:

style "boxstyle1"
{
    bg[ACTIVE] = { 0.0, 1.0, 0.0 }
    bg[NORMAL] = { 1.0, 0.0, 0.0 }
    bg[PRELIGHT] = { 0.0, 0.0, 1.0 }
}
widget "*.eventbox1" style "boxstyle1"

虽然采用正常颜色,但其他状态没有。谁遇到过这个问题?


编辑:
在小部件初始化后进行调试时,widget->样式会正确存储所有值。

我注册状态改变的事件,当'状态'改变时,它永远不会触发。 在输入,离开,推送,释放事件时,我检查了widget->状态始终为0。 继续检查...

如果我在事件框中放置一个图像,图像 - >状态也永远不会更新...

我正在使用GTK 2.16,使用GtkBuilder加载xml


gtk_widget_modify_bg(widget,GTK_STATE_ACTIVE,color)也不会因0(NORMAL)以外的状态而改变

2 个答案:

答案 0 :(得分:0)

GtkEvent没有任何状态:它只是一个没有默认绘制任何内容的容器(因此没有任何可以激活 prelighted 的东西)。

如果您希望自定义事件框的子窗口小部件,则应在rc文件中使用正确的glob syntax

widget "*.eventbox1.*" style "boxstyle1"

新添加的.*匹配eventbox1的所有子项。

答案 1 :(得分:0)

尝试强制GTK以这种方式刷新其待处理的操作:

while gtk.events_pending():     #   this forces the refresh
    gtk.main_iteration()        #   of the screen