Widget(3itk)
β¨ Widget β the whole vibe β¨
Okay bestie, so this page is from the [incr Tk] manual, and it's all about Widget β the base class for mega-widgets that live inside a frame. That's the name, that's the game. π
𧬠INHERITANCE π§¬
It goes like this, one ancestor and that's it:
itk::Archetype<-itk::Widget
So Widget is the child, Archetype is the parent. Family tree, but make it iconic. πΈ
π STANDARD OPTIONS π
The standard options it rocks are:
backgroundcursor
Peep the options manual entry if you want the full tea on the standard options. π«
π DESCRIPTION π
So the Widget class inherits everything from the Archetype class β like, every single thing, no cap β and then it adds a Tk frame called the hull component to represent the body of the mega-widget. The hull is literally the body. Main character of the anatomy. π
The window class name for the hull gets set to the most-specific class name for the mega-widget. And the protected variable itk_interior holds the window path name for the hull component. Lowkey crucial, remember it.
Derived classes specialize this widget by packing other widget components into the hull. That's the whole move β hull first, then stuff goes inside it. π
And because the hull for the Widget class is implemented with a Tk frame, mega-widgets in the Widget class can be packed into other frames and toplevels. Versatile queen. β¨
π§© COMPONENTS π§©
- Name:
hull - Class:
Frame
The hull component acts as the body for the entire mega-widget. Other components get packed into the hull to further specialize the widget β so it's giving skeleton, it's giving foundation, it's giving everything. π
π EXAMPLE π
Okay here's a whole example that implements a simple TextDisplay mega-widget. It creates a read-only display of text with a text widget and a scrollbar. Obsessed honestly.
option add *TextDisplay.wrap none widgetDefault
option add *TextDisplay.textBackground ivory widgetDefault
option add *TextDisplay.width 40 widgetDefault
option add *TextDisplay.height 10 widgetDefault
itcl::class TextDisplay {
inherit itk::Widget
constructor {args} {
itk_component add text {
text $itk_interior.info -state disabled -yscrollcommand [code $itk_interior.sbar set]
} {
usual
keep -tabs -wrap -width -height
rename -background -textbackground textBackground Background
}
pack $itk_component(text) -side left -expand yes -fill both
itk_component add scrollbar {
scrollbar $itk_interior.sbar -command [code $itk_interior.info yview]
}
pack $itk_component(scrollbar) -side right -fill y
eval itk_initialize $args
}
public method display {info}
public method append {info}
}
itcl::body TextDisplay::display {info} {
$itk_component(text) configure -state normal
$itk_component(text) delete 1.0 end
$itk_component(text) insert 1.0 $info
$itk_component(text) configure -state disabled
}
itcl::body TextDisplay::append {info} {
$itk_component(text) configure -state normal
$itk_component(text) insert end $info
$itk_component(text) configure -state disabled
}
itk::usual TextDisplay {
keep -background -cursor -foreground -font
keep -activebackground -activerelief
keep -highlightcolor -highlightthickness
keep -insertbackground -insertborderwidth -insertwidth
keep -insertontime -insertofftime
keep -selectbackground -selectborderwidth -selectforeground
keep -textbackground -troughcolor
}
#
# EXAMPLE: Display the /etc/passwd file
#
TextDisplay .file -background red
pack .file
.file display [exec cat /etc/passwd]
π KEYWORDS π
itk, Archetype, Widget, mega-widget
And that's the whole page, bestie β sending you off with the source deets: this one's from itk version 3.0, filed under Widget(3itk). Go forth and pack your hulls. π¦π
π¦ where this page comes from
- debian trixie: tk-itk4-doc 4.2.5~20240521-1 Β· BSD-Tcl
- ubuntu questing: tk-itk4-doc 4.2.5~20240521-1
- ubuntu resolute: tk-itk4-doc 4.2.5~20240521-1build1 Β· BSD-Tcl
- ubuntu stonking: tk-itk4-doc 4.2.7~20260303-2 Β· BSD-Tcl
- Copyright (c) 1993-1998 Lucent Technologies, Inc
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms