0

我一直在尝试找到一种方法来处理对 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 个组合框触发一个信号(从而一次更改所有框的基色。)

这是一个令人沮丧的问题,占用了我太多时间。似乎应该有一个简单的解决方案。

4

0 回答 0