我正在编写一个执行一些图像处理的程序,但需要用户在主要处理发生之前在输入图像上输入一些标记。这是通过 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() 中获取一些值?
编辑:按照一个答案中给出的建议,我将 Window 小部件换成了 Dialog 小部件,但仍然没有得到我想要的:
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
感谢您的阅读,如果有任何概念上的缺陷,请纠正我。