我一直在尝试找到一种方法来处理对 pygtk 组合框的关注。目标是在组合框获得焦点时更改组合框的颜色,然后在焦点离开组合框时将其改回。我试过使用“focus_out_event”,但这似乎不适用于组合框。我已经广泛搜索了这个问题的答案,看来这可能是一个 gtk+ 错误??
到目前为止我提出的解决方案......
我有 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 个组合框触发一个信号(从而一次更改所有框的基色。)
这是一个令人沮丧的问题,占用了我太多时间。似乎应该有一个简单的解决方案。