画像処理を実行するプログラムを作成していますが、メイン処理が発生する前に、ユーザーが入力画像にいくつかのマーカーを入力する必要があります。これは Python/Numpy/Scipy と PyGTK で行われています。
これを可能にする方法として、GUI を開き、メインループから値を取り戻そうとする小さなスクリプトを試してみましたが、うまくいきません。
import gtk
def getGuiInput(var):
window = gtk.Window()
button = gtk.Button('Will <var> be set to 10?')
window.add(button)
def submit(widget, event, var):
var = 10
gtk.main_quit()
button.connect('button-press-event', submit, var)
window.set_position(gtk.WIN_POS_CENTER)
window.show_all()
gtk.main()
var = 0
print "before, var is %d" % var
getGuiInput(var)
print "after, var is %d" % var
ウィジェットの作成とレイアウト、イベントの接続、コールバックとイベント ハンドラーの使用にかなり精通しています。
私が知りたいのは、すべてを関数内に配置して、メインスクリプトでそれを呼び出して「入力ウィンドウ GUI」を開き、完了すると呼び出し元に値を返す方法です。gtk.main() 内から値を取得するにはどうすればよいですか?
編集:1つの回答で与えられた提案に従って、ウィンドウウィジェットをダイアログウィジェットに交換しましたが、それでも欲しいものが得られません:
import gtk
def run(var):
dialog = gtk.Dialog("Entre em action")
dialog.response(1)
button = gtk.Button('Will <var> be set to 10?')
dialog.add_action_widget(button, 1)
button.show()
def submit(widget, event, var):
print var
var = 10
button.connect('button-press-event', submit, var)
dialog.run()
var = 0
print "before, var is %d" % var
result = run(var)
print result
print "after, var is %d" % var
読んでくれてありがとう。概念上の欠陥があれば訂正してください。