我一直试图找到一种方法来处理聚焦pygtk组合框。目标是在聚焦时改变组合框的颜色,然后在聚焦离开组合框时将其改回。我尝试过使用“focus_out_event”,但这似乎不适用于组合框。我已经广泛搜索了这个问题的答案,看起来这可能是一个gtk + bug?
到目前为止我提出的解决方案......
我有4个单独的组合框cb0 - cb3。我已将它们连接到相同的方法......
self.cb0.connect("focus", self.focus)
在方法中我改变了状态和颜色......
def focus(self, widget, direction):
if widget.get_state() == gtk.STATE_NORMAL:
widget.set_state(gtk.STATE_SELECTED)
widget.modify_base(gtk.STATE_SELECTED, gtk.gdk.Color("#99CCFF"))
else:
widget.set_state(gtk.STATE_NORMAL)
widget.modify_base(gtk.STATE_NORMAL, gtk.gdk.Color("#FFFFFF"))
使用键盘进行标签时,这可以提供所需的效果。但如果用鼠标点击组合框我会得到不良结果。现在我正在寻找一种跟踪鼠标点击的方法。
我似乎无法找到一个信号或方法来检查何时单击特定的组合框。使用“grab_notify”信号将触发所有4个组合框的信号(从而立即更改所有框的基色。)
这是一个令人沮丧的问题,花费了我太多的时间。似乎应该有一个简单的解决方案。