Ruby + Tk 的画布和形状正在出错

  • 本文关键字:出错 Tk Ruby ruby tk-toolkit
  • 更新时间 :
  • 英文 :


我正在运行Windows + Ruby2.3,并且弄乱了tk库。我试图让它绘制一个不同颜色的矩形网格,但是每当我尝试向画布添加形状时,我的脚本都会崩溃。下面是代码的精简版本:

require 'tk'
require 'tkextlib/tile'
root = TkRoot.new
content = Tk::Tile::Frame.new(root)
canvas = TkCanvas.new(content)
line = TkcLine.new( canvas, 0, 0, 10, 10, :fill => 'red' )
Tk.mainloop

但是,当我运行它时,出现以下错误+回溯:

C:/Ruby23/lib/ruby/2.3.0/tk/itemconfig.rb:115:in `hash_kv': wrong argument type nil (expected Array) (TypeError)
        from C:/Ruby23/lib/ruby/2.3.0/tk/itemconfig.rb:115:in `itemconfig_hash_kv'
        from C:/Ruby23/lib/ruby/2.3.0/tk/canvas.rb:722:in `_parse_create_args'
        from C:/Ruby23/lib/ruby/2.3.0/tk/canvas.rb:735:in `create'
        from C:/Ruby23/lib/ruby/2.3.0/tk/canvas.rb:758:in `create_self'
        from C:/Ruby23/lib/ruby/2.3.0/tk/canvas.rb:751:in `initialize'
        from C:/nopathforyou.rb:9:in `new'
        from C:/nopathforyou.rb:9:in `<main>'

有人知道该怎么办吗?提前谢谢。

我遇到了同样的错误,我最终通过添加下面的代码解决了这个问题:

module TkItemConfigOptkeys
    def itemconfig_hash_kv(id, keys, enc_mode = [], conf = [])
        hash_kv(__conv_item_keyonly_opts(id, keys), enc_mode, conf)
    end
end

它应该在"require"语句之后,比如说,你的代码应该是这样的:

require 'tk'
require 'tkextlib/tile'
module TkItemConfigOptkeys
  def itemconfig_hash_kv(id, keys, enc_mode = [], conf = [])
    hash_kv(__conv_item_keyonly_opts(id, keys), enc_mode, conf)
  end
end
root = TkRoot.new
content = Tk::Tile::Frame.new(root)
canvas = TkCanvas.new(content)
line = TkcLine.new( canvas, 0, 0, 10, 10, :fill => 'red' )
Tk.mainloop

添加后,我的代码就像一个魅力。

Ruby/Tk 在此提交中修复了此错误。

因此,您可以更新您的 tk 库作为替代方案。

最新更新