2017-03-25 4 views
2

私はWindows + Ruby2.3を実行していて、tkライブラリを使いこなしていました。さまざまな色の長方形のグリッドを描くようにしようとしていますが、キャンバスにシェイプを追加しようとするたびにスクリプトがクラッシュします。ここでは、コードのストリップダウンバージョンがあります:Ruby + 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>' 

誰もがこのことについて何をすべきかを知っていますか?前もって感謝します。

私は同じバグと競合してのだ、と私は最終的に以下のコードを追加することで、この問題を解決する

答えて

4

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 '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 

私の英語のために申し訳ありません。

それを追加した後、私のコードは正常に動作します。

+0

ありがとうございました!それは今働く。 – Punknoodles

+1

@Punknoodlesそれはgreateになるでしょう。 – ice1000

+1

@Punknoodles私はRuby/Tkにプルリクエストを送信しました。寄稿者は、このバグは既に修正されていますが、Rubyリリースの後に修正が行われると私に伝えました。おそらく、将来のバージョンではもう必要ないでしょう。 – ice1000

0

Ruby/Tkはthis commitにこのバグを修正しました。

代わりに、あなたのtkライブラリを更新することができます。

関連する問題