Ruby:文件对话框不会关闭

时间:2014-11-22 10:06:34

标签: ruby gtk openfiledialog gtk2

我使用ruby gem gtk2来显示一个简单的文件对话框,用户可以从他的计算机中选择一个文件。它工作正常,但有一个小问题。

选择文件后文件对话框不会关闭,但它会一直打开,直到整个脚本完成。

我的文件对话框如下所示:

def ask_for_file(question)
    dialog =  Gtk::FileChooserDialog.new(question, nil,
                         Gtk::FileChooser::ACTION_OPEN,
                         "gnome-vfs",
                         [Gtk::Stock::OPEN, Gtk::Dialog::RESPONSE_ACCEPT],
                         [Gtk::Stock::CANCEL, Gtk::Dialog::RESPONSE_CANCEL]
                         )
    if dialog.run == Gtk::Dialog::RESPONSE_ACCEPT
        file_name = dialog.filename.to_s
        return file_name
    else
        return nil
    end
end

当我在我的脚本中这样称呼它时:

path = ask_for_file("Test?")
sleep(5)
puts "continue with #{path}"

文件对话框保持打开状态5秒,并且在该时间内无响应。如何在选择文件后但在5秒睡眠之前关闭它?

在返回dialog.destroy之前,我尝试在ask_for_file中使用file_name,但这似乎没什么帮助。

2 个答案:

答案 0 :(得分:0)

我通过创建一个带有按钮的新窗口来打开文件对话框来解决它。单击打开按钮后,我还发送信号以销毁主窗口。这样,在我选择文件后,所有内容都会立即关闭。

有关参考,请参阅this example

答案 1 :(得分:0)

您需要在GTK +提供的对话框上手动调用gtk_widget_destroy(),例如GtkFileChooserDialog;点击其中一个按钮就不够了。请注意,这也会破坏对话框中的文件选择器部分,因此请务必先获取文件名和其他任何有价值的信息。