Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GTK+小部件状态未更新?_Gtk - Fatal编程技术网

GTK+小部件状态未更新?

GTK+小部件状态未更新?,gtk,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" 虽然采用正常颜色,但其他状态不采用。有人遇到过这个问题吗 编辑: 在小部件初始化后进行调试时,小

在我的应用程序中,我尝试使用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"
虽然采用正常颜色,但其他状态不采用。有人遇到过这个问题吗

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

我注册了“状态更改”事件,该事件在“状态”更改时从不触发。 在enter,leave,push,release事件中,我选中了widget->state总是0。 继续检查

同样的事情,如果我把一个图像放在事件框中,图像->状态从不更新也

我使用的是GTK2.16,使用GtkBuilder加载xml

那么gtk_widget_modify_bgwidget,gtk_STATE_ACTIVE,颜色不会因状态而改变,除了0正常

GtkEvent没有任何状态:它只是一个容器,默认情况下没有绘制任何内容,因此没有任何可以激活或预照明的内容

如果您希望自定义事件框的子窗口小部件,则应在rc文件中使用适当的:

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

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

尝试强制GTK以以下方式刷新其挂起的操作:

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

做了测试:在eventbox中添加一个图像并注册了以下信号:回车、离开、按、释放回调输入没有问题,但在回调中,当我选中widget->state时,它总是0。现在资源文件似乎无关紧要了……请添加一个GTK按钮:GtkImage是一个被动小部件,通常会对状态更改做出反应,也就是说,当您不使用图标集时。谢谢eventbox中的GtkButton现在确实会更改状态,但该按钮甚至不接受RC文件中设置的正常bg颜色。是否将。*附加到小部件选择器?此外,GTK+主题引擎可以随意绘制小部件,也可以忽略您提供的颜色提示,因此确保测试时没有任何引擎处于活动状态。当然,您可以临时将选择器修改为widget*style-boxstyle1,以确保颜色在我的系统上的变化,bg[NORMAL]按预期工作。已使用的widget*style-boxstyle1 bg[NORMAL]在窗口和某些小部件上工作。但不是在按钮上。任何其他州在我的情况下都不起作用。