【问题标题】:Ruby: File dialog wont closeRuby:文件对话框不会关闭
【发布时间】:2014-11-22 10:06:34
【问题描述】:

我正在使用 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 秒睡眠之前关闭它?

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

【问题讨论】:

    标签: ruby gtk openfiledialog gtk2


    【解决方案1】:

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

    参考见this example

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-20
        • 2014-10-21
        • 2020-11-21
        • 2010-10-27
        • 2013-07-05
        • 2011-11-28
        • 1970-01-01
        相关资源
        最近更新 更多