Tk Layout help please

M

Mohammad ---

okay this is an example of what I want it to look like:
http://www.geocities.com/name_here44/tkdream.bmp

I want to be able to have them edit items and their prices, it saves it
into another txt file for another program, so I want them to be able to
edit the items and prices the way the file saves is:

item
price
item
price
...

I currently don't know how to do tabels or anything like that so if
someone could help me out on that.
 
M

Morton Goldberg

okay this is an example of what I want it to look like:
http://www.geocities.com/name_here44/tkdream.bmp

I want to be able to have them edit items and their prices, it
saves it
into another txt file for another program, so I want them to be
able to
edit the items and prices the way the file saves is:

item
price
item
price
...

I currently don't know how to do tabels or anything like that so if
someone could help me out on that.

Implementing a table is not such an easy thing to do if you are new
to Ruby/Tk. It might be better to use a pre-existing table widget
rather than try to code one yourself.

There is a table widget in /usr/lib/ruby/1.8/tkextlib/tktable.rb (on
Mac OS X -- path might be somewhat different path on other platform).
There are examples of using this widget at

<http://www.ruby-lang.org/cgibin/cvsweb.cgi/ruby/ext/tk/sample/
tkextlib/tktable/>

I have not used this widget myself, so I can't give you any tips on
how to use it. Sorry.

Regards, Morton
 
H

Hidetoshi NAGAI

From: Mohammad --- <[email protected]>
Subject: Tk Layout help please
Date: Mon, 23 Oct 2006 03:39:41 +0900
Message-ID: said:
okay this is an example of what I want it to look like:
http://www.geocities.com/name_here44/tkdream.bmp

How about this?
---------------------------------------------------------
require 'tk'

class Editable_TkListbox < TkListbox
def _ebox_placer(coord_y)
idx = self.nearest(coord_y)
x, y, w, h = self.bbox(idx)
@ebox.place:)x => 0, :relwidth => 1.0,
:y => y - self.selectborderwidth,
:height => h + 2 * self.selectborderwidth)
@ebox.pos = idx
@ebox.value = self.listvariable.list[idx]
@ebox.focus
end
private :_ebox_placer


def initialize(*args)
super(*args)

unless self.listvariable
self.listvariable = TkVariable.new(self.get(0, :end))
end

@ebox = TkEntry.new(self){
@pos = -1
def self.pos; @pos; end
def self.pos=(idx); @pos = idx; end
}

@ebox.bind('Return'){
list = self.listvariable.list
list[@ebox.pos] = @ebox.value
self.listvariable.value = list
@ebox.place_forget
@ebox.pos = -1
}

@ebox.bind('Escape'){
@ebox.place_forget
@ebox.pos = -1
}

self.bind('Double-1', '%y'){|y| _ebox_placer(y) }
end
end

if $0 == __FILE__
scr = TkScrollbar.new.pack:)side=>:right, :fill=>:y)

lbox1 = Editable_TkListbox.new.pack:)side=>:left)
lbox2 = Editable_TkListbox.new.pack:)side=>:left)

scr.assign(lbox1, lbox2)

lbox1.insert:)end, *%w(a b c d e f g h i j k l m n))
lbox2.insert:)end, 0,1,2,3,4,5,6,7,8,9,0,1,2,3)

Tk.mainloop
end
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,215
Messages
2,571,113
Members
47,713
Latest member
LeliaB1379

Latest Threads

Top