我使用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
,但这似乎没什么帮助。
答案 0 :(得分:0)
我通过创建一个带有按钮的新窗口来打开文件对话框来解决它。单击打开按钮后,我还发送信号以销毁主窗口。这样,在我选择文件后,所有内容都会立即关闭。
有关参考,请参阅this example
答案 1 :(得分:0)
您需要在GTK +提供的对话框上手动调用gtk_widget_destroy()
,例如GtkFileChooserDialog;点击其中一个按钮就不够了。请注意,这也会破坏对话框中的文件选择器部分,因此请务必先获取文件名和其他任何有价值的信息。