6

キャンセル用と適用用の2つのボタンがある非常にシンプルなウィンドウがあります。適用するためのボタンをデフォルトのボタンとして設定するには? (Enterを押すと、「適用」ボタンが押されます)

ただし、最初の入力ウィジェットにフォーカスを設定したい (ボタンに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)
4