You are looking at historical revision 21296 of this page. It may differ significantly from its current revision.

PS/Tk

PS/Tk provides an interface to the Tk toolkit, and is an effective tool for creating graphical interfaces.

Examples

A simple example of using this library:

(require-extension pstk)

(define (celsius->fahrenheit item)
  (let ((number (string->number item)))
    (if (number? number)
      (+ (* number 9/5) 32)
      0.0)))

(tk-start)
(tk/wm 'title tk "Celsius to Fahrenheit")

(let* ((celsius (tk 'create-widget 'entry))
       (label (tk 'create-widget 'label))
       (button (tk 'create-widget 'button
		   'text: 'Calculate
		   'command: (lambda () 
			       (label 'configure 
				      'text: (number->string (celsius->fahrenheit (celsius 'get))))))))
  ; layout widgets in a grid
  (tk/grid celsius 'column: 2 'row: 1 'sticky: 'we 'padx: 5 'pady: 5)
  (tk/grid label 'column: 2 'row: 2 'sticky: 'we 'padx: 5 'pady: 5)
  (tk/grid button 'column: 2 'row: 3 'sticky: 'we 'padx: 5 'pady: 5)
  (tk/grid (tk 'create-widget 'label 'text: "celsius") 
	   'column: 3 'row: 1 'sticky: 'w 'padx: 5 'pady: 5)
  (tk/grid (tk 'create-widget 'label 'text: "is") 
	   'column: 1 'row: 2 'sticky: 'e 'padx: 5 'pady: 5)
  (tk/grid (tk 'create-widget 'label 'text: "fahrenheit") 
	   'column: 3 'row: 2 'sticky: 'w 'padx: 5 'pady: 5)

  (tk-event-loop))

Several examples can be found in the svn repository for this egg.

Running

By default, the program tclsh85 is called, but an alternative program may be provided as an optional argument to (tk-start). For example, to instead use wish84 begin the program with (tk-start "wish84").

Under windows, there is a problem with keyboard input. Currently, the fix is to show a dialog box which is dismissed by pressing 'Enter' (not clicking!) directly after starting tk.

(tk-start "wish85")
(tk/message-box 'title: "starting program" 'message: "Press ENTER" 'type: 'ok)
(tk-wm title tk "PROGRAM") 
etc

Authors

Kenneth A Dickey, Nils M Holm and Wolf-Dieter Busch created the initial versions of pstk. This port to Chicken, plus some additions, is by Peter Lane.

License

Public Domain.

Requirements

Relies on the posix library.

Also requires an installation of tk.

Version History