如何在PyGTK中的几个按钮中禁用“按钮焦点”?

时间:2012-08-14 15:57:59

标签: python button pygtk pygobject

我想在我窗口的所有按钮中禁用焦点。我可以使用widget.set_can_focus(False)禁用一个按钮,但我想知道将此功能应用于窗口中所有按钮的规范方法。

仅供参考,我使用HBoxVBox容器。

1 个答案:

答案 0 :(得分:3)

我会遍历一个按钮列表,然后使用“duck typing”来禁用它们的焦点。

例如:

button_widgets = [button1, button2, ..., buttonN]

for button in button_widgets:
    button.set_can_focus(False)

更新:

如何遍历HBox或VBox中的所有元素以查找按钮:

如果您在包含按钮的最低层有HBox或VBox的名称,您只需循环浏览它们,检查按钮然后将它们添加到列表中。这是一个打印出HBox中所有按钮的例子:

import gtk
import pygtk
hbox = gtk.HBox()
button1 = gtk.Button('1')
button2 = gtk.Button('2')
hbox.add(button1)
hbox.add(button2)
for i in hbox:
    if type(i) == gtk.Button: print i

输出:

<gtk.Button object at 0x1909320 (GtkButton at 0x171e8e0)>
<gtk.Button object at 0x19093c0 (GtkButton at 0x171e9a0)>