I finally sussed it!  Here's the code I ended up with ...

	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

That calculation of x and y is so that I can move the entire graph and
keep each label relative to the graph node it's associated with.

I might end up writing a small document about my learning process once
I have the program finished, to help reduce the next person's learning
curve.

Thanks to everyone who made suggestions.