2009-07-11 8 views
5

私は2つのボタンがある非常にシンプルなウィンドウを持っています.1つはキャンセル用、もう1つは適用用です。適用するボタンをデフォルトのものに設定するにはどうすればよいですか?PyGTKのデフォルトボタンを設定する方法は?

は、しかし、私が最初に入力ウィジェットにフォーカスを設定したい(I 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) 

答えて

関連する問題