Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Tk (software)

From Wikipedia, the free encyclopedia
GUI toolkit or framework

Tk
Tcl logo
Tk 8.6.6 on Windows 10
Original authorJohn Ousterhout
DeveloperTcl Core Team[1]
Initial release1991; 35 years ago (1991)
Stable release
9.0.2[2] Edit this on Wikidata / 2 July 2025
Written inC
Operating systemCross-platform
PlatformCross-platform
TypeWidget toolkit
LicenseBSD-style[3]
Websitetcl.tk
Repository

Tk is across-platformwidget toolkit that provides a library of basic elements ofGUI widgets for building agraphical user interface (GUI) in many programming languages. It isfree and open-source software released under aBSD-stylesoftware license.

Tk provides many widgets commonly needed to develop desktop applications, such as button, menu, canvas, text, frame, label, etc. Tk has been ported to run on most flavors ofLinux,macOS,Unix, andMicrosoft Windows. LikeTcl, Tk 8.6 supportsUnicode within theBasic Multilingual Plane, while Tk 9 supports the fullUnicode range.

Tk was designed to be extended, and a wide range of extensions are available that offer new widgets or other capabilities.[4][5]

Since Tcl/Tk 8, it offers "native look and feel" (for instance, menus and buttons are displayed in the manner of "native" software for any given platform).[6] Highlights of version 8.5 include a new theming engine, originally called Tk Tile,[7] but it is now generally referred to as "themed Tk", as well as improved font rendering.[8] Highlights of version 8.6 includePNG support and angled text.[9]

History

[edit]

Tk was developed byJohn Ousterhout as an extension for theTcl scripting language. It was first publicly released in 1991.[10] Tkversioning was done separately from Tcl until version 8.0.

Tk was written originally for Unix/X11, and proved extremely popular with programmers in the 1990s by virtue of its being easier to learn and use thanMotif and other X11 toolkits of the time.[11] Tk was also ported to Microsoft Windows and Macintosh platforms, starting with Tk 4.2 and improved with native look and feel in Tk 8.0 (released 1997). To mark the popularity and significance of Tk in the 1990s, Ousterhout was given theACM Software System Award in 1997 for Tcl/Tk:[12]

ACM Software System Award Winner: John K Ousterhout

For the Tcl scripting language which allows developers to create complex systems from pre-existing components. The embedded Tk provides a simple mechanism for creating graphical user interfaces. Together they make a powerful addition to the software repertoire.

Interest in Tk waned significantly from the late 1990s and onward. The default look and feel on Unix still emulatedMotif, despite the mainstream replacement of Motif by toolkits such asFLTK,Qt, andGTK.[13] Widgets that became commonly used in applications (e.g. trees,combo boxes, tabbed notebooks) were not available in the Tk core, but only via multiple, often competing add-ons.[14]

Tk 8.5, released in late 2007, corrected some of these problems by adding missing widgets to the core, introducing a new theming engine and modernizing the look and feel on Unix.[8]However, because some code changes were required to incorporate these advancements, many existing applications retain the older Motif-inspired feel that Tk had become known for.[15]

Architecture

[edit]

Tk is a platform-independent GUIframework developed for Tcl. From a Tcl shell (tclsh), Tk may be invoked using the commandpackage require Tk. The programwish (WIndowing SHell) provides a way to run a tclsh shell in a graphical window as well as providing Tk.[16]

Tk has the following characteristics:

  • Platform-independent: Like Tcl, Tk is interpreted. It has been ported to multiple platforms and can easily run on all of them without modification.[17]
  • Customizable: Almost all the features of a widget in Tk are customizable through options during the creation of the widget or later on through the configure command.[18]
  • Configurable: Many of the options can be stored in an option database, making it very easy to parameterize the look of an application (such as the color scheme). This also means that storing the application-specific options is only a matter of saving the option add commands and executing them on loading the application.[19]

Language bindings

[edit]

A library written in one programming language may be used in another language ifbindings are written; Tk is integrated with the Tcl language. Various other languages have bindings for Tk, a partial list of which is on the Tk website.[20] Bindings exist for additional languages which might not be listed, includingAda (called TASH),[21]Go (through[22]),Haskell (called HTk),[23]Perl,Python (calledTkinter),R (through the standard package: tcltk),Ruby,Rexx, andCommon Lisp.

There are several ways to use Tk fromPerl: the Tcl::Tk and Tkx Perl modules,[24] both of which use Tcl as a bridge to access Tk, and Perl/Tk,[25] which provides native Perl access to Tk structures. ThePython binding uses Tcl as a bridge to Tk.[26]

Features

[edit]

Tk provides various widgets.[27] Basic widgets are embedded intotoplevel widgets, which in turn are usually hosted by the operating system in floating windows that can be moved around on the screen.[28]

Basic widgets

[edit]
  • button
  • canvas
  • checkbutton
  • combobox
  • entry
  • frame
  • label
  • labelframe
  • listbox
  • menu
  • menubutton
  • message
  • notebook
  • panedwindow
  • progressbar
  • radiobutton
  • scale
  • scrollbar
  • separator
  • sizegrip
  • spinbox
  • text
  • tk_optionMenu
  • treeview

Top-level widgets

[edit]
  • tk_chooseColor – pops up adialog box for the user to select a color.
  • tk_chooseDirectory – pops up a dialog box for the user to select a directory.
  • tk_dialog – creates a modal dialog and waits for a response.
  • tk_getOpenFile – pops up a dialog box for the user to select a file to open.
  • tk_getSaveFile – pops up a dialog box for the user to select a file to save.
  • tk_messageBox – pops up a message window and waits for a user response.
  • tk_popup – posts a popup menu.
  • toplevel – creates and manipulates toplevel widgets.

Geometry managers

[edit]

Basic widgets are arranged intoplevel windows using geometry managers:[29]

  • place – positions widgets at absolute locations
  • grid – arranges widgets in a grid
  • pack – packs widgets into a cavity

See also

[edit]

References

[edit]
  1. ^"Tcl/Tk Core Development".Tcl Developer Xchange. Retrieved1 November 2016.
  2. ^"[TCLCORE] Tk 9.0.2 RELEASED". 2 July 2025. Retrieved3 July 2025.
  3. ^"Tcl/Tk Licensing Terms".Tcl Developer Xchange. Retrieved4 November 2016.
  4. ^Writing a Tk Widget in C, Chapter 46 inPractical Programming in Tcl and Tk,ISBN 0-13-038560-3
  5. ^"Extensions for Tcl and Tk".Tcler's Wiki. Retrieved1 November 2016.
  6. ^"Tcl/Tk 8.0".Tcl Developer Xchange. 18 September 2013. Retrieved1 July 2014.
  7. ^"Tile: an improved themeing engine for Tk".SourceForge. Retrieved4 November 2016.
  8. ^ab"Tcl/Tk 8.5 Release Announcement".Tcl Developer Xchange. 18 September 2013. Retrieved1 July 2014.
  9. ^"Tcl/Tk 8.6 Release Announcement".Tcl Developer Xchange. 20 September 2013. Retrieved1 July 2014.
  10. ^Ousterhout, John."History of Tcl".Tcl Developer Exchange. Retrieved1 April 2010.
  11. ^"Tk Backgrounder".TkDocs. Retrieved4 November 2016.
  12. ^"John K Ousterhout - Award Winner".ACM Awards. Retrieved4 November 2016.
  13. ^"TIP #48: Tk Widget Styling Support".Tcl Developer Xchange. Retrieved1 November 2016.
  14. ^"treeview".Tcler's Wiki. Retrieved1 November 2016.
  15. ^"TIP #319: Implement Backwards Compatibility for ttk Themed Widgets in tk Widgets".Tcl Developer Xchange. Retrieved1 November 2016.
  16. ^"wish manual page - Tk Applications".Tcl Developer Xchange. Retrieved1 November 2016.
  17. ^"How to Compile Tcl".Tcl Developer Xchange. Retrieved1 November 2016.
  18. ^"ttk::widget manual page - Tk Themed Widget".Tcl Developer Xchange. Retrieved1 November 2016.
  19. ^"option manual page - Built-In Commands".Tcl Developer Xchange. Retrieved1 November 2016.
  20. ^"Languages with a Tk binding".Tcler's Wiki. Retrieved1 July 2014.
  21. ^"TASH".SourceForge. Retrieved1 July 2014.
  22. ^"tk9.0: The CGo-free, cross platform GUI toolkit for Go".Go Packages. Retrieved22 November 2024.
  23. ^"HTk home".Informatik - FB3 - Uni Bremen. Retrieved4 November 2016.
  24. ^"Tkx::Tutorial - How to use Tkx".ActiveState Docs. Retrieved1 November 2016.
  25. ^Perl/Tk Concepts, Chapter 1 inMastering Perl/Tk,ISBN 978-1565927162
  26. ^Tkinter, Chapter 2.4 inModern Tkinter for Busy Python Developers,ASIN B0071QDNLO
  27. ^"Tk Commands, version 8.6.6".Tcl Developer Xchange. Retrieved1 November 2016.
  28. ^Widgets, Chapter 17.2 inTcl and the Tk Toolkit,ISBN 978-0321336330
  29. ^Geometry Managers, Chapter 17.6 inTcl and the Tk Toolkit,ISBN 978-0321336330

Further reading

[edit]

External links

[edit]
Wikibooks has a book on the topic of:Tcl Programming/Tk
Low-level platform-specific
OnAmigaOS
OnClassic Mac OS,macOS
OnWindows
OnUnix
OnBeOS,Haiku
OnAndroid
CLI
Low Level Cross-platform
CLI
C
Java
High-level, platform-specific
OnAmigaOS
OnClassic Mac OS,macOS
Object Pascal
Objective-C,Swift
C++
CLI
OnWindows
CLI
C++
Object Pascal
OnUnix andX11
High-level, cross-platform
C
C++
Objective-C
CLI
Adobe Flash
Go
Haskell
Java
JavaScript
Common Lisp
Lua
Pascal
Object Pascal
Perl
PHP
Python
Ruby
Tcl
XML
shell
Dart
General
Software
packages
Community
Organisations
Licenses
Types and
standards
Challenges
Related
topics
National
Other
Retrieved from "https://en.wikipedia.org/w/index.php?title=Tk_(software)&oldid=1333191737"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp