winfo, a builtin
Tk command, returns information about a window.
See Also edit
- wm
- information related to the Window manager.
Common subcommands edit
Description edit
To ensure that the window is fresh, it's usually best to call
winfo from a script
bound to
<Configure>.
Rarely-used subcommands edit
You probably don't need to use these subcommands, either because they couple to functionality that is largely obsolete in the days of universal full-depth displays or because they require deep knowledge of the X protocol to make use of.
winfo class edit
RS 2006-04-12:
winfo class returns for
toplevels the app name (as from the topmost script), else the Titlecased
widget type. Here's a little convenience proc that returns the suitable Tk command for deserializing a widget:
proc winfo'class w {
if {[winfo toplevel $w] eq $w} {return toplevel}
string tolower [winfo class $w]
}
MG: This seems to only be the case for ".". Other toplevels seem to return "Toplevel" as you'd expect. (Anyone know why it returns the app name for ".", though? Curious what the thought behind it was.)
DKF: It relates to
option database support. In particular, other names would be used by completely different applications (e.g. Firefox, Xterm, etc.)
MG Ahh, I see. Thanks :)
The Window Under the Pointer edit
PYK 2017-05-16:
[auriocus
] provided this in the
Tcl Chatroom:
# print the window name under the mouse cursor
proc pickwin {} {
after 1000 {
set pickwidget [winfo containing {*}[winfo pointerxy .]]
if { $pickwidget ne {} } {
puts $pickwidget
foreach option [$pickwidget configure] {
# leave out synonym options
if { [llength $option] != 5 } continue
lassign $option name dbname dbclass defvalue currentvalue
if { $defvalue != $currentvalue } { puts " $name $currentvalue" }
}
} else { puts "No widget under cursor." }
}
}