gpt4 book ai didi

ruby - Ruby 中的 GTK FileChooserDialog 不会关闭窗口

转载 作者:太空宇宙 更新时间:2023-11-03 16:45:32 25 4
gpt4 key购买 nike

当我在 bash 终端(Ubuntu 14.04、ruby 1.9.3)中运行以下 ruby​​ 代码时,folder_test 工作正常,但 my_test 表现出奇怪的行为:当我从中选择一个文件夹时,它不会关闭 gtk 对话框窗口书签并且焦点保留在对话窗口上而不是返回到终端尽管已将所选文件夹正确报告给终端。出了什么问题以及如何强制关闭对话窗口?

# -*- encoding : utf-8 -*- 
#!/usr/bin/ruby

require 'gtk3'

def get_folder(folder)
a=''
Dir.chdir(File.expand_path(folder)) {
dialog = Gtk::FileChooserDialog.new(
:title => "Choose folder", :parent => nil,
:action => :select_folder,
:buttons => [[Gtk::Stock::OPEN, Gtk::ResponseType::ACCEPT], [Gtk::Stock::CANCEL, Gtk::ResponseType::CANCEL]])
if dialog.run == Gtk::ResponseType::ACCEPT
a=dialog.filename
end
dialog.destroy }
return a
end

def folder_test
b=get_folder("/home")
if b=="/home"
puts "No folder chosen"
exit
end
puts "#{b} was choosen."
end

def my_test
while true do
folder_test
puts "Another folder?(y/n)"
answer=gets.chomp.downcase
unless answer=='y'
exit
end
end
end

#folder_test
my_test

最佳答案

你可以在dialog.destroy之后使用下面的代码:

while Gtk.events_pending?
Gtk.main_iteration
end

例如:

  if dialog.run == Gtk::ResponseType::ACCEPT
a=dialog.filename
end
dialog.destroy
while Gtk.events_pending?
Gtk.main_iteration
end
}
return a
end

差异:

@@ -13,7 +13,11 @@ def get_folder(folder)
if dialog.run == Gtk::ResponseType::ACCEPT
a=dialog.filename
end
- dialog.destroy }
+ dialog.destroy
+ while Gtk.events_pending?
+ Gtk.main_iteration
+ end
+ }
return a
end

关于ruby - Ruby 中的 GTK FileChooserDialog 不会关闭窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33438137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com