如何在PyGTK中设置默认按钮?

时间:2009-07-11 20:30:35

标签: python user-interface pygtk

我有一个非常简单的窗口,我有2个按钮 - 一个用于取消,一个用于应用。如何设置应用默认按钮? (当我按下回车键时,按下“应用”按钮)

但是,我想将焦点设置为第一个输入小部件(我不能在按钮上使用grab_focus())

有什么建议吗?

修改 wuub 的回答之后,它的视觉效果很好。但是,当我按下不同小部件中的按钮时,它不会运行默认按钮的回调。

示例代码:

import os, sys, pygtk, gtk 

def run(button, window):
    dialog = gtk.MessageDialog(window, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, "OK")
    dialog.run()
    dialog.destroy()

window = gtk.Window()
window.connect("destroy", gtk.main_quit)

vbox = gtk.VBox(spacing = 10)
entry = gtk.Entry()
vbox.pack_start(entry)

button = gtk.Button(stock = gtk.STOCK_SAVE)
button.connect("clicked", run, window)
button.set_flags(gtk.CAN_DEFAULT)
window.set_default(button)
vbox.pack_start(button)

window.add(vbox)
window.show_all()
gtk.main()

EDIT2 :必须运行每个可以激活默认小部件的输入

widget.set_activates_default(True)