>@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.