Widget(n)

πŸ“¦
version 4.2.3 Β· 2 versions
, in fedora 43, fedora 44

✨ 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 πŸŽ€

  • background
  • cursor

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