Python函数打开GTK窗口/对话框并从i获取一些值

2024-10-01 15:41:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个程序,执行一些图像处理,但需要用户在输入图像上输入一些标记,在主处理发生之前。这是通过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公司()? 在

编辑:按照一个答案中给出的建议,我将窗口小部件换成了一个对话窗口小部件,但仍然没有得到我想要的:

^{pr2}$

谢谢你的阅读,如果有任何概念上的缺陷,请纠正我。在


Tags: 脚本eventgtkismain部件vardef
1条回答
网友
1楼 · 发布于 2024-10-01 15:41:43

在一个函数中,您可以将窗口创建为gtk.Dialog,并执行dialog.run(),它将运行第二个仅限于该对话框的GTK主循环。(这意味着在次循环运行时,您将无法与程序中的其他窗口交互。)

如果在对话框中添加一个带有响应ID的按钮,或者用一个值调用dialog.response(),那么该值将是dialog.run()返回值。在

dialog.add_action_widget(button, 10)
# ...
print 'var is', var
var = dialog.run()
print 'var is now', var  # should be 10 if you clicked the button

相关问题 更多 >

    热门问题