···
From: ts decoux@moulon.inra.fr
Subject: Re: question about ‘configure’ with tk
Date: Fri, 30 Aug 2002 20:14:44 +0900
Message-ID: 200208301109.g7UB90p22031@moulon.inra.fr
works under tcl). Under Ruby, it is not possible. I would like to know
if it is a Ruby limitation or if it is possible to add this feature.
Try this
pigeon% ruby -rtk -e ‘a = TkButton.new(nil, “text” => “a”); p a.configure({})’
Use ‘configinfo’ method.
On Ruby/Tk, ‘configure’ method is the method for setting properties,
and ‘configinfo’ method for getting.
the followings are the way of getting configure informations.
(1) widget.property
(2) widget[‘property’]
(3) widget.cget(‘property’)
(4) widget.configinfo(‘property’)
(5) widget.configinfo
From (1) to (3) return current value of the property.
(4) returns an array [property, resource-name, resource-class,
default-value, current-value], and (5) returns an array of all properties.
For example,
b = TkButton.new
p b.padx #==> 12
p b[‘padx’] #==> 12
p b.cget(‘padx’) #==> 12
p b.configinfo(‘padx’)
#==> [“padx”, “padX”, “Pad”, “3m”, 12]
p b.cinfiginfo
#==> [[“activebackground”, “activeBackground”, “Foreground”, “#ececec”,
“#ececec”], [“activeforeground”, “activeForeground”, “Background”,
“Black”, “Black”], [“anchor”, “anchor”, “Anchor”, “center”,
“center”], [“background”, “background”, “Background”, “#d9d9d9”,
“#d9d9d9”], [“bd”, “borderWidth”], [“bg”, “background”], [“bitmap”,
“bitmap”, “Bitmap”, , ], [“borderwidth”, “borderWidth”,
“BorderWidth”, 2, 2], [“command”, “command”, “Command”, , ],
… (snip)
A known problem of configinfo method is that
it cannot distinguish a string and a value.
Tcl/Tk expresses a string with spaces and an array of strings
as a same string. It cannot be distinguished by Ruby.
Therefore, on the result of configinfo,
a null string is converted to a null array.
By the way, the followings are the way for setting properties.
(1) widget.property(value)
(2) widget[‘property’] = value
(3) widget.configure(‘property’, value)
(4) widget.configure(‘property’=>value, ‘property’=>value, …)
Each method calls Tcl interpreter once.
So, if you want to set some properties for one widget,
(4) is faster than others.
If there is a book such as O’REILLY’s “Perl/Tk Pocket Reference”,
how many people will want it ?
–
Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)