Ruby GTK在无显示环境下失败(Python正常)

1 投票
1 回答
762 浏览
提问于 2025-04-15 23:17

看起来,Ruby写的GTK应用程序在没有图形界面的环境下无法运行,而用Python写的应用程序却可以。

这里有一些简单的例子(即使没有gtk主循环),来展示这个现象:

gtktest.py:

#! /usr/bin/python
import gtk
print('the end')

gtktest.rb:

#! /usr/bin/ruby
require "gtk2"
puts('the end')

X窗口环境:

$ ./gtktest.py
the end
$ ./gtktest.rb
the end

非X环境:

$ ./gtktest.py
/usr/lib/pymodules/python2.5/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display
  warnings.warn(str(e), _gtk.Warning)
the end

$ ./gtktest.rb
/usr/lib/ruby/1.8/gtk2.rb:12:in `init': Cannot open display:   (Gtk::InitError)
    from /usr/lib/ruby/1.8/gtk2.rb:12
    from ./gtktest.rb:2:in `require'
    from ./gtktest.rb:2

正如你所看到的,Python版本在有警告的情况下成功运行,而Ruby版本在导入gtk时就直接失败了。

(Python版本即使在有gtk主循环的情况下,也能正常工作,VTE终端还可以进行一些文本处理)

有没有人知道如何让这些Ruby GTK应用程序在非X环境下运行呢?

环境:debian squeeze,python-gtk2,libgtk2-ruby

1 个回答

2

是的,你可以,设置Xvfb

撰写回答