Widget(n)
β¨ NAME β¨
okay bestie, welcome to Widget(n) from the [incr Tk] manual β it's literally the base class for mega-widgets within a frame. no cap, this is where the hull magic starts. π
πΈ INHERITANCE πΈ
itk::Archetype <- itk::Widget
that's the family tree, and it's giving legacy. π
π STANDARD OPTIONS π
backgroundcursor
these are the standard options, bestie: See the "options" manual entry for details on the standard options. iykyk. π
π DESCRIPTION π
The Widget class inherits everything from the Archetype class, and adds a Tk frame called the "hull" component to represent the body of the mega-widget. The window class name for the hull is set to the most-specific class name for the mega-widget. The protected variable itk_interior contains the window path name for the "hull" component. Derived classes specialize this widget by packing other widget components into the hull. the way that works is lowkey iconic. β¨
Since 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. fr fr, nesting goes crazy. π¦
π¦ COMPONENTS π¦
- Name:
hull - Class:
Frame
The "hull" component acts as the body for the entire mega-widget. Other components are packed into the hull to further specialize the widget. main character energy, honestly. π
π EXAMPLE π
The following example implements a simple TextDisplay mega-widget. It creates a read-only display of text with a text widget and a scrollbar. not me reading this and stanning. π
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 β the whole squad. β
mwah π this page is from itk version 3.0, filed under Widget(n) β the footer has no date, bestie, just vibes. π«Ά
π¦ where this page comes from
- fedora 43: itk 4.2.3-1.fc43 Β· TCL
- fedora 44: itk 4.2.3-1.fc44 Β· 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