Ruby TkPackage找不到包BWidget(RuntimeError)

时间:2017-07-21 17:11:22

标签: ruby tk

我现在正在使用Ruby开发一个需要GUI的小工具。当然,我使用tk来实现GUI,它应该包含一个组合框,我的代码就像:

require 'tk'
require 'tkextlib/bwidget'
root = TkRoot.new('height' => 615, 'width' => 205){title 'Window'}
combobox = Tk::BWidget::ComboBox.new(root)
combobox.values = [1, 2, 3, 4]
combobox.place('height' => 25, 'width'  => 100, 'x'   => 10, 'y'   => 10 )
Tk.mainloop

但是,这似乎不起作用,因为每次运行程序时运行时错误“Ruby TkPackage都找不到包BWidget”提示。但我检查了库,实际上可以在tkextlib文件夹中找到bwidget文件夹。

有人知道为什么这不起作用吗?

3 个答案:

答案 0 :(得分:2)

根据official site中的Windows安装教程,您应该从RubyInstaller site安装Ruby,确保选中包含Tk / Tcl支持的选项。

如果您使用RVM,请尝试重新安装运行rvm reinstall ruby-2.0.0 --with-tcl --with-tk的当前Ruby版本(假设Ruby 2.0是您当前的版本)。

答案 1 :(得分:2)

使用RubyInstaller-2.4.1,可以按照MSYS2安装tk和BWidget包。在cmd中运行以下命令(运行32位版本的Ruby时,将x86_64替换为i686):

ridk exec pacman -S mingw-w64-x86_64-bwidget
gem install tk

这应该为Tk::BWidget添加必要的库。

答案 2 :(得分:0)

您的系统上可能缺少bwidget工具包。

BWidget工具箱是Tcl / Tk的高级小部件集(Tcl / Tk的扩展小部件)。它包含小部件,例如进度条,3D分隔符,框架,平移或滚动的窗口,按钮框,笔记本或对话框,以及复合小部件,例如组合框,旋转框和树小部件等。

在Ubuntu 18.04中,我必须安装tcl / tk扩展名才能使用:

sudo apt-get update
sudo apt-get install bwidget