TclTk: An introduction - PowerPoint PPT Presentation

1 / 31
About This Presentation
Title:

TclTk: An introduction

Description:

Developed in late 1980s by John Ousterhout at UC Berkeley ... 3. Tcl enhanced at Sun Microsystems: Windows, Macintosh ports. Web/Internet support ... – PowerPoint PPT presentation

Number of Views:108
Avg rating:3.0/5.0
Slides: 32
Provided by: matthew335
Category:

less

Transcript and Presenter's Notes

Title: TclTk: An introduction


1
Tcl/Tk An introduction
  • D. Kim, K. Kundu, and M. Siegel
  • November 26, 2002
  • CMSC 631

2
Tcl (Tool Control Language) history
  • Developed in late 1980s by John Ousterhout at UC
    Berkeley
  • Created as a single language used to control IC
    tools, rather than use a different language for
    each one.
  • Provides for extensions such as Tk (GUI), incr
    Tcl (OOP), etc.

3
Timeline of Tcl
1. Tcl created as general-purpose
command/scripting language by John Ousterhout
7. ActiveState introduces Tcl support and services
  • 4. Scriptics formed
  • Evolve and extend Tcl platform
  • Create development tools

8.0 Aug
6.0 Sept
7.0 Sept
7.4 July
7.6 Oct
8.1 Apr
8.3 Feb

1988
1989
1990
1991
1992
1993
1995
1997
1998
1994
1999
1996
2000
2001
8.2 Aug
  • 2. Open source distributions
  • from U.C. Berkeley
  • Easy GUIs under Unix
  • Extensible applications
  • 3. Tcl enhanced at Sun Microsystems
  • Windows, Macintosh ports
  • Web/Internet support
  • Java support

Slide courtesy of ActiveState
4
Installing Tcl/Tk
  • Windows/Mac Latest distribution maintained by
    ActiveState (ActiveTcl 8.4.1.0). Download at
    http//www.tcl.tk/
  • Unix/Linux Tcl/Tk is included with most
    Unix/Linux distributions

5
3 Ways to Use Tcl/Tk
  • tclsh for interactive use
  • tclsh
  • puts I am using tclsh
  • I am using tclsh
  • wish for programs using the Tk package
  • Embed in C program with lttcl.hgt

6
Basics
  • Tcl script
  • Sequence of commands.
  • Tcl command
  • One or more words separated by white space.
  • First word is command name, others are arguments.
  • Returns string result.
  • Example
  • set a 22set b 33

7
and substitution
  • Substitutions
  • variable substitution
  • set id 631
  • puts This class is CMSC id
  • command substitution, evaluated as separate
    script
  • set b expr id4

8
Math Evaluation
  • expr command evaluates expressions.
  • Sample command Result
  • set b 5 5
  • expr (b4)-3 17
  • expr b lt 2 0
  • Many other math functions included, such as sin,
    cos, sqrt, and log.

9
Conditional/Looping Statements
  • Like most languages, Tcl supports an if
    statement, though the keywords then and else are
    optional.
  • For loop
  • for set a 0 a lt 100 incr a
  • more code here
  • While loop is also supported

10
Tcl lists
  • list are ordered collections of elements
  • any proper list can also be a Tcl command (eval)
  • concat list list concatenate lists
  • concat a b c d e f ? a b c d e f
  • join list sep convert to string with separator
  • join a b c ", " ? a, b, c
  • Some list functions lappend lindex, linsert,
    llength, lrange

11
Tcl Arrays
  • Tcl arrays are 'associative arrays' index is any
    string
  • set nicholas(1) 331
  • set nicholas(2) expr nicholas(1) 300
  • array names nicholas
  • Matricies can be faked with index notation
  • set A(1,1) 10
  • set A(1,2) 11
  • array names A
  • gt 1,1 1,2 (commas included in names!)

12
Regular Expressions
  • Tcl has full support for regular expression
    pattern matching and substitution
  • regexp command for matching, places matched chars
    into variable specified
  • regsub for substitution

13
Tk An Introduction
  • Tk is a Toolkit for programmable user interfaces.
  • Tk provides a set of Tcl commands that create and
    manipulate widgets.
  • John Ousterhout began work on Tk in late 1988
    finished in 1990.
  • Tk's GUI facilities were both very simple and
    very powerful.

14
Tk Widgets
  • A widget is window in a GUI with particular
    appearance and behavior.
  • Widget types include buttons, scrollbars, menus,
    and text windows.
  • Tk also has a general purpose drawing widget
    called a canvas that lets you create lightweight
    items such as lines, boxes and bitmaps.

15
Tk Widgets (Cont)
  • Tk widgets organized in a hierarchy. - children
    windows inside a parent window
  • Parent widgets use frame widgets to lay the
    children windows out
  • Can create complex windowing schemes using Tk
    widget hierarchy.

16
Tk Geometry Manager
  • Widgets are under the control of geometry manager
    that controls their size and location on the
    screen
  • Until the GM learns about a widget, it is not
    mapped onto a screen
  • Types of Geometry Managers
  • The Pack GM
  • The Grid GM
  • The Place GM

17
Tk A Small Example
  • !/usr/local/bin/wish
  • button .hello -text Hello -command puts stdout
    "Hello World!"
  • pack .hello -padx 20 -pady 10
  • (code courtesy of Practical Programming in Tcl
    and Tk by Brent B. Welch)

18
Tk Events
  • Tk-based application has event-driven control
    flow.
  • Usually Tk widgets handle most events
    automatically.
  • For specialized behavior, bind command is used.

19
Tk Events (Cont)
  • Examples of events include mouse motion, mouse
    clicks, keystrokes, window resizing, window
    destruction
  • Virtual events like cut and paste are also
    possible.
  • Event bindings grouped into classes called
    bindtags which are associated with a class.
  • Focusing on windows helps switch bindtags.

20
Example diff command
!/usr/bin/wish Description this program
will give the user a graphical interface to the
Unix command "diff". The window will allow
the user to specify a pair of files to check
for differences and a few options, as well as
colorizing the output appropriately title wm
title . tkdiff
21
Example (Cont)
frame for the first file frame .first
-borderwidth 1 label .first.name1 -text "Filename
1" -foreground red entry .first.ent1 -width 68
-relief sunken \ -textvariable
name1 pack .first.name1 -side left pack
.first.ent1 -side left -fill x -expand true
22
Example (Cont)
frame for the second file frame .second
-borderwidth 0 label .second.name2 -text
"Filename 2" -foreground blue entry .second.ent2
-width 68 -relief sunken \
-textvariable name2 pack .second.name2 -side
left pack .second.ent2 side left -fill x -expand
true pack .first .second -fill both
23
Example (Cont)
frame for check boxes set third frame .third
-borderwidth 2 checkbutton third.1 -text
"Ignore Case Changes" \
-variable cFlag checkbutton third.2 -text
"Ignore Whitespace Diffs" \
-variable wFlag pack third.1 third.2 -side
left pack third -fill x
24
Example (Cont)
frame for command buttons set fourth frame
.four -borderwidth 2 button fourth.1 -text Quit
-command Exit fourth.1 config -activebackground
red button fourth.2 -text Go -command
Run fourth.2 config -activebackground
green button fourth.3 -text Clear -command
Clear fourth.3 config -activebackground
blue pack fourth.1 fourth.2 fourth.3 -side
left pack fourth
25
Example (Cont)
frame for display area frame .msg -borderwidth
2 set box text .msg.box -width 60 -height 10 \
-borderwidth 1 -relief raised -setgrid
true \ -yscrollcommand .msg.yscroll
set \ -xscrollcommand .msg.xscroll
set scrollbar .msg.yscroll -command .msg.box
yview \ -orient vertical scrollbar
.msg.xscroll -command .msg.box xview \
-orient horizontal pack .msg.yscroll -side right
-fill y pack .msg.xscroll -side bottom -fill
x pack .msg.box -side left -fill both -expand
true pack .msg -side top -fill both -expand true
26
Example (Cont)
for change colars .msg.box tag configure TagA
-foreground red .msg.box tag configure TagB
-foreground blue when user click exit
button proc Exit set picked tk_messageBox
-type yesno \
-message "Really Quit?" \
-default no \
-icon question if picked "yes"
exit
27
Example (Cont)
when user click go button proc Run
global box name1 name2 cFlag wFlag input if
wFlag 1 cFlag 1 set cmd "diff
name1 name2 -c -w" elseif wFlag 1
cFlag 0 set cmd "diff name1 name2
-w" elseif wFlag 0 cFlag 1
set cmd "diff name1 name2 -c" else
set cmd "diff name1 name2 if catch open
"cmd cat" input box insert end
input\n else fileevent input readable
Log box insert end cmd\n
28
Example (Cont)
function for write a log to display area proc
Log global input box if eof input
Stop else gets input line if
regexp "lt" line matches box insert
end line\n TagA elseif regexp "gt" line
matches box insert end line\n TagB
else box insert end line\n
box see end
29
Example (Cont)
when input file is end of file proc Stop
global input box catch close input
clear the display area proc Clear global
box box delete 1.0 end
30
Example Run
31
Example Output
Write a Comment
User Comments (0)
About PowerShow.com