require 'tk' x1 = TkVariable.new y1 = TkVariable.new x2 = TkVariable.new y2 = TkVariable.new TkFrame.new{|f| TkLabel.new(f,'text'=>'x1: ').pack('side'=>'left') TkEntry.new(f,'width'=>8, 'textvariable'=>x1 ).pack('side'=>'left') TkLabel.new(f,'text'=>' y1: ').pack('side'=>'left') TkEntry.new(f,'width'=>8, 'textvariable'=>y1 ).pack('side'=>'left') }.pack TkFrame.new{|f| TkLabel.new(f,'text'=>'x2: ').pack('side'=>'left') TkEntry.new(f,'width'=>8, 'textvariable'=>x2 ).pack('side'=>'left') TkLabel.new(f,'text'=>' y2: ').pack('side'=>'left') TkEntry.new(f,'width'=>8, 'textvariable'=>y2 ).pack('side'=>'left') }.pack c = TkCanvas.new(nil, 'background'=>'white' ) TkFrame.new{|f| TkButton.new(f,'text'=>'Plot', 'command'=>proc{ TkcOval.new(c, x1.to_i, y1.to_i, x1.to_i + 4, y1.to_i + 4, 'fill'=>'red') }).pack('side'=>'left') TkButton.new(f,'text'=>'Line', 'command'=>proc{ TkcLine.new(c, x1.to_i, y1.to_i, x2.to_i, y2.to_i, 'width'=>2 ) }).pack('side'=>'left') TkButton.new(f,'text'=>'Rectangle', 'command'=>proc{ TkcRectangle.new(c, x1.to_i, y1.to_i, x2.to_i, y2.to_i, 'width'=>2 ) }).pack('side'=>'left') TkButton.new(f,'text'=>'Oval', 'command'=>proc{ TkcOval.new(c, x1.to_i, y1.to_i, x2.to_i, y2.to_i, 'width'=>2 ) }).pack('side'=>'left') TkButton.new(f,'text'=>'EXIT', 'command'=>proc{exit}).pack('side'=>'left') }.pack c.pack Tk.mainloop