我正在编写一个程序,它执行一些图像处理,但需要用户在输入图像上输入一些标记,然后才能进行主处理。这是用Python/Numpy/Scipy和PyGTK完成的。Python函数打开GTK窗口/对话框并从中获得一些值
的方式来做到这一点,我想这将打开一个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()中获得一些价值?
编辑:继一个答案给出的建议,我换了窗口小部件的对话之一,但仍然没有得到我想要的:
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
感谢您的阅读,如果有指正请说是任何概念上的缺陷。
其实,我的主程序从命令行运行。如果我还没有主窗口,我想我不会打电话给对话框。这就是为什么我认为我应该从CLI控制流程中调用一个打开GUI程序的函数,然后将结果放在'gtk.main_quit()'上,并将控制权交给调用它的CLI脚本。 – heltonbiker 2012-08-15 13:51:43
如果您没有主窗口,调用对话框没有任何问题,但您建议的内容同样可行。 – ptomato 2012-08-15 17:29:21
好的,但我仍然不知道该怎么做。我发布的代码根本行不通。 – heltonbiker 2012-08-15 19:15:05