# Defining a Method

**URL:** <https://www.ruby-forum.com/t/defining-a-method/114838>\
**Category:** Ruby\
**Created:** [September 17, 2007, 11:45pm UTC](https://www.ruby-forum.com/t/defining-a-method/114838 "2007-09-17T23:45:54Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![wintermute](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/e19b73/32.png) [@wintermute](https://www.ruby-forum.com/u/wintermute)\
**Post date:** [September 17, 2007, 11:45pm UTC](https://www.ruby-forum.com/t/defining-a-method/114838/1 "2007-09-17T23:45:54Z")

</div>

Hi,  
I am new to Ruby from basic. I am having a hard time getting my head  
around the “def”.

I have an Entry widget for a number, a label widget for the answer,  
button widget to multiply entry by 2 and place in Label.

I know this should/is simple, but cannot seem to get started.

Here is the messed up code that I have, would someone tell me what to  
do?

Thank you,  
Dave

#!/usr/bin/env ruby  
require ‘gtk2’

window =Gtk::Window.new  
window.signal\_connect(“delete\_event”) do  
Gtk.main\_quit  
false  
end

box1 = Gtk::HBox.new(false, 0)  
window.add(box1)

buttonE = Gtk::Button.new(“Exit”)  
buttonE.signal\_connect(“clicked”)do  
Gtk.main\_quit  
false  
end

box1.pack\_start(buttonE, false, false, 10)

buttonC = Gtk::Button.new(“Click”)  
buttonC.signal\_connect(“clicked”) {  
label.text=(entry.text.to\_f \* 2).to\_s  
}

box1.pack\_start(buttonC, true, true, 10)

label = Gtk::Label.new(“LABEL”)  
box1.pack\_start(label, true, true, 10)

entry = Gtk::Entry.new  
entry.set\_max\_length( 50 )  
box1.pack\_start(entry, true, true, 10)

window.border\_width = 100  
window.show\_all  
Gtk.main

---

<div class="post-metadata">

**Author:** ![wintermute](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/e19b73/32.png) [@wintermute](https://www.ruby-forum.com/u/wintermute)\
**Post date:** [September 18, 2007, 12:08am UTC](https://www.ruby-forum.com/t/defining-a-method/114838/2 "2007-09-18T00:08:14Z")

</div>

On 9/17/07, Dave M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> do?  
> Gtk.main\_quit  
> false
> 
> window.border\_width = 100  
> window.show\_all  
> Gtk.main

I suspect that the first problem is that a the point you invoke:

buttonC.signal\_connect(“clicked”) {  
label.text=(entry.text.to\_f \* 2).to\_s  
}

the variable label has not yet been defined in the outer scope.

## Try moving this until someplace after you initialize the label variable

Rick DeNatale

My blog on Ruby  
[http://talklikeaduck.denhaven2.com/](http://talklikeaduck.denhaven2.com/)

---

<div class="post-metadata">

**Author:** ![wintermute](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/e19b73/32.png) [@wintermute](https://www.ruby-forum.com/u/wintermute)\
**Post date:** [September 18, 2007, 12:22am UTC](https://www.ruby-forum.com/t/defining-a-method/114838/3 "2007-09-18T00:22:54Z")

</div>

Rick Denatale wrote:

> ## Try moving this until someplace after you initialize the label variable
> 
> Rick DeNatale
> 
> My blog on Ruby  
> [http://talklikeaduck.denhaven2.com/](http://talklikeaduck.denhaven2.com/)

Thank you, that did it for this one. I thought something like this had  
to be put in a “def” to work.

When should a method be used?
