Skip to content
Andrej Vodopivec edited this page Mar 13, 2015 · 6 revisions

Entries, comboboxes and spinboxes can be used to input text. Comboboxes and spinboxes are special kinds of entries and all functions for entries can also be used on them.

Entry

In the example we set the value of the entry, modify cursor position and selection. When Return is pressed in the entry, the value is showed in a label.

Entry

(defpackage :tk-user
  (:use :cl :tk)
  (:export :main))

(in-package :tk-user)

(defun main ()
  (with-tk-root (root)
    (setf (window-title root) "Entry")
    (setf (window-minsize root) '(300 100))

    (let* ((f (frame :parent root))
           (e-var (string-var))
           (e (entry :parent f :textvariable e-var))
           (l-var (string-var)))

      (pack f :expand t :fill "both")

      (pack e :padx 5 :pady 5)
      (pack (label :parent f
                   :textvariable l-var))

      (entry-insert e 0 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
      (entry-icursor e 10)
      (entry-insert e "ins" "1")
      (entry-selection-range e "ins" "end")

      (bind-event e "<Return>"
                  (lambda (ev)
                    (declare (ignore ev))
                    (setf (var-value l-var)
                          (var-value e-var)))))))

Functions implemented for entries:

  • (entry-bbox e ind)
  • (entry-delete e first &optional last)
  • (entry-get e)
  • (entry-icursor e ind)
  • (entry-index e ind)
  • (entry-insert e ind str)
  • (entry-selection-adjust e ind)
  • (entry-selection-clear e)
  • (entry-selection-from e ind)
  • (entry-selection-present e)
  • (entry-selection-range e start end)
  • (entry-selection-to e ind)
  • (entry-validate e)
  • (entry-xview-moveto e frac)
  • (entry-xview-scroll e num what)

Tcl/Tk documentation for entry.

Combobox

Example

Combobox

(defpackage :tk-user
  (:use :cl :tk)
  (:export :main))

(in-package :tk-user)

(defun main ()
  (with-tk-root (root)
    (setf (window-title root) "Combobox")
    (setf (window-minsize root) '(300 200))

    (let* ((f (frame :parent root))
           (c (combobox :parent f :width 20))
           (fonts (font-names)))
      
      (pack f :expand t :fill "both")

      (pack c :expand t)
      (window-configure c :values fonts)
      (bind-event c "<<ComboboxSelected>>"
                  (lambda (ev)
                    (declare (ignore ev))
                    (message-box "A selection happened"
                                 :title "Selection"
                                 :detail (entry-get c)))))))

Additional functions for combobox:

  • (combobox-current c)

Tcl/Tk documentation for combobox.

Spinbox

Example

Spinbox

(defpackage :tk-user
  (:use :cl :tk)
  (:export :main))

(in-package :tk-user)

(defun main ()
  (with-tk-root (root)
    (setf (window-title root) "Spinbox")
    (setf (window-minsize root) '(300 100))

    (let* ((f (frame :parent root))
           (s-var (float-var))
           (s (spinbox :parent f
                       :from 10
                       :to 100
                       :increment 10
                       :wrap t
                       :width 4
                       :textvariable s-var))
           (l-var (string-var)))

      (pack f :expand t :fill "both")

      (pack s :expand t)
      (pack (label :parent f :textvariable l-var)
            :pady 10)

      (setf (var-value l-var) "Spinbox")
      (setf (var-value s-var) 50)

      (bind-event s "<<Increment>>"
                  (lambda (ev)
                    (declare (ignore ev))
                    (setf (var-value l-var)
                          (format nil "Increment: ~a" (var-value s-var)))))

      (bind-event s "<<Decrement>>"
                  (lambda (ev)
                    (declare (ignore ev))
                    (setf (var-value l-var)
                          (format nil "Decrement: ~a" (var-value s-var))))))))

Tcl/Tk documentation for spinbox.

Clone this wiki locally