如何在Ruby TK中创建日历小部件

如何在Ruby TK中创建日历小部件,ruby,calendar,widget,tk,Ruby,Calendar,Widget,Tk,我正试图用以下代码在Ruby Tk中创建一个日历小部件: 需要“tk” 需要“TXTXTLIB/iwidgets” 调试=[] 开始 root=TkRoot.new{title'Ruby/Tk Calendar'} cal=Tk::Iwidgets::Calendar.newroot{ 轮廓“黑色” 工作日背景“灰色90” 周末背景“白色” 命令{p cal.get} } cal.pack'pady'=>10 加州电视台节目'11/1/2006' 设置初始窗口几何图形;i、 尺寸和位置。 温w,

我正试图用以下代码在Ruby Tk中创建一个日历小部件:

需要“tk” 需要“TXTXTLIB/iwidgets” 调试=[] 开始 root=TkRoot.new{title'Ruby/Tk Calendar'} cal=Tk::Iwidgets::Calendar.newroot{ 轮廓“黑色” 工作日背景“灰色90” 周末背景“白色” 命令{p cal.get} } cal.pack'pady'=>10 加州电视台节目'11/1/2006' 设置初始窗口几何图形;i、 尺寸和位置。 温w,温h=250195 root.minsizewin_w,win_h win\u lf=root.winfo\u屏幕宽度-win\u w/2 根.geometry{win_w}x{win_h}+{win_lf}+50 设置调整大小权限。 root.resizebalse,false 使Cmnd+Q按预期工作。 root.bind'Command-q'{Tk.root.destroy} 主回路 确保 是否将调试放入DEBUG.empty? 终止 但是,我收到以下信息:

找不到包Itk RuntimeError

TkPackage找不到包Itk运行时错误


我已经安装了tcl软件包,但仍然无法工作。我正在将Fedora 31与ruby 2.6.5一起使用。

这个答案将在撰写本文时安装ruby的最新版本,以及最新兼容的Tcl版本

注意:在安装Ruby 2.7.0之后,$gem install tk表示Tcl/Tk8.6不受支持[;]它将无法正常工作。因此,我们必须将Tcl的使用限制在8.5版。我们将通过安装ActiveTcl 8.5版来实现这一点

这些步骤适用于Debian Stretch,因此,对于Fedora 31,YMMV.:

创建一些目录:

$mkdir~/install $mkdir~/install/temp $mkdir~/progra 使用web浏览器,从ActiveState下载。然后,安装它:

$pushd~/install/temp $tar zxf~/Downloads/ActiveTcl-8.5*.tar.gz $cd ActiveTcl-8.5* $./install.sh 回答其安装问题:

Please specify the installation directory.
Path [/opt/ActiveTcl-8.5]: ~/progra/ActiveTcl-8.5

Please specify the directory for the demos.
Path [~/progra/ActiveTcl-8.5/demos]: 

Please specify the runtime installation directory.
Path [~/progra/ActiveTcl-8.5]:
$echo'导出路径=$HOME/progra/ActiveTcl-8.5/bin:$PATH'>>~/.bashrc $echo'export MANPATH=$HOME/progra/ActiveTcl-8.5/bin/man:$MANPATH'>>~/.bashrc 安装rvm所需的一些系统包:

$sudo apt get安装curl dirmngr gnupg 根据以下步骤安装Ruby环境管理器:

$\curl-sSLhttps://get.rvm.io |bash-s--忽略点文件 $echo'将RVM添加到脚本的路径。确保这是最后一次更改路径变量。“>~/.bashrc $echo'导出路径=$PATH:$HOME/.rvm/bin'>>~/.bashrc $echo'[-s$HOME/.rvm/scripts/rvm]]&&source$HOME/.rvm/scripts/rvm将rvm作为函数加载到shell会话*中*'>~/.bashrc $exit 检查并使用rvm:

$type rvm | head-n1应该说‘rvm是一个函数’。 $rvm列表已知 $rvm安装2.7.0-启用共享-启用pthread-使用tk-使用tcl 安装Tk gem所需的系统包:

$sudo apt get安装libx11 dev 安装Tk gem并检查Tk安装:

$gem安装tk $ruby-W0-e需要“tk”;p Tk::Tk_PATCHLEVEL $ruby-W0-e需要“tk”;需要“txtlib/iwidgets”;p‘好’
现在,当我运行您的程序时,我看到一个日历小部件。

请包含ruby-e require'tk'的输出;p Tk::Tk_PATCHLEVEL.FWIW,使用我的旧但可靠的Tk版本8.5.12和Ruby版本2.2.5p319的组合,您的代码在另一个包上请求“tkextlib/iwidgets”时失败,表示:TkPackage找不到包Itcl.FWIW,TkDocs教程页面的现代最佳实践部分及其Tk扩展部分不鼓励使用iWidget。这是教程中唯一提到它的地方。你为Fedora31安装了iwidgets包吗?我找到了一个。Web搜索找不到包Itk生成此错误报告:。那有用吗?非常感谢!我做了所有的步骤,它的工作!!