Ruby Gtk2 and signal_connect method


I am writting a little script for displaying a list of icons and when i
clic on one of the icon it should return the absolute path of the icon.

So i create a windows widget which contain a table widget. In each cell
of the table I put an icon and create an event with this code:

#for a in 0…( @my_icons_files_array.length - 1)


event_box[a] =

event_box[a].signal_connect(“button_press_event”) do


table.attach(event_box[a],col_begin,( col_begin + 1 ), row_begin,

(row_begin + 1 ))

Is there a way to get a reference of the objet I have cliqued on in
order to link this reference with the path used in


hi Silkmoth,

i use gtk2 quite a bit, and have found that the “Gnome 2” section of
this forum (under “Misc” on the top right,) is extremely helpful - and
is probably a better place to post questions about gtk2.

in answer to your question - you could try something like this, which
will give you the filename of the file within the event box you click
on. i’ve used images in my example rather than icons, but you should
get the idea…

require ‘gtk2’

win =

@table =, 0, false)
@left = -1
@top = 0

img0 =“konichiwa.jpeg”) #change these, obviously
img1 =“ride.png”)
img2 =“TradyBlix.png”)
img3 =“arm.png”)

my_imgs = [img0, img1, img2, img3]

ebox =
ebox.signal_connect(“button_press_event”){p img.file} #or something
more interesting
@left = @left + 1
@top = @top + 1 if @left == 2 #change this,
@left = 0 if @left == 2 #and this, to define the number of columns in
your table
@right = @left + 1
@bottom = @top + 1
@table.resize(@right, @bottom)
@table.attach_defaults(ebox, @left, @right, @top, @bottom)

win.add @table



This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs