>@variable = TkVariable.new
>TkEntry.new(entryFrame) {
>	textvariable variable
>}

I THINK the problem with this one is that it should be

   @variable = TkVariable.new

   TkEntry.new(entryFrame, { textvariable variable })

I don't mean the layout :-) ... just the fact that hash needs to be
part of the call to TkEntry#new, not a block passed to it.

However, I'm pretty new to the Tk stuff, too.

>Similarly...
>
>TkEntry.new(@window) {
>      pack('side' => 'left')
>}
>TkButton.new(@window) {
>      pack('side' => 'left')
>}

Hmmm ... maybe what I said before was wrong.  I would have thought
you'd get the same problem here, but you say this bit works.  Of
course, it might just happen to work because the default is to do what
you expect.

Anyway, I hope that was helpful, rather than being a red herring!

Good luck.