-
Notifications
You must be signed in to change notification settings - Fork 1
Input windows
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.
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
.
(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.
Example
(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.
Example
(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))))))))