>OK. (I presume you have run the big widget demo with the various canvas 
>sub-demos, and used the show-code buttons, which is a little easier than 
>grepping.

Nope.  I didn't realise that existed.  I'll obviously give it a go,
though!  Thanks for the pointer.

>Well, I have only learned (and mostly forgotten by now) the basics, plus I 
>don't have time to look into this, unfortunately.

No problem.  I'm starting to think that I should write a small
document on what I've learnt while building my application, since it
feels like I've wanted to do things that presumably aren't done all
that often ... obviously I have weird requirements :-).

>If no one else pops up with an answer, you might want to resort to 
>comp.lang.tcl and translate the answer to Ruby.

I already posted the question to both the perl tk and the tcl
newsgroups.  I got some suggestions, but none of them were fruitful.

However, the good news is that I've only just sorted it out.  I don't
know what I did wrong before, because I tried this at an earlier
stage.  I probably left something important out that I stuck in the
second time around.

I'll another message above this, so people don't waste their time
trying to work it out for me.

The following code does what I need ...

	frame = TkFrame.new(@canvas)                               
                                                           
	labelText = TkVariable.new(nodeLabel.Text())               
                                                           
	label     = TkLabel.new(frame, 'textvariable' => labelText,
             		           "foreground" => @LABELCOLOUR)      
                                                           
	label.pack                                                 
                                                           
	x = node.X + nodeLabel.DeltaX()                            
	y = node.Y + nodeLabel.DeltaY()                            

	frame.place "in" => @canvas, "x" => x, "y" => y