Title: | Tcl/Tk Interface |
---|---|
Description: | Interface and language bindings to Tcl/Tk GUI elements. |
Authors: | R Core Team |
Maintainer: | R Core Team <[email protected]> |
License: | Part of R 4.4.1 |
Version: | 4.4.1 |
Built: | 2024-06-15 17:27:46 UTC |
Source: | base |
Interface and language bindings to Tcl/Tk GUI elements.
This package provides access to the platform-independent Tcl scripting language and Tk GUI elements. See TkWidgets for a list of supported widgets, TkWidgetcmds for commands to work with them, and references in those files for more.
The Tcl/Tk documentation is in
the system man pages.
For a complete list of functions, use ls("package:tcltk")
.
Note that Tk will not be initialized if there is no DISPLAY
variable set, but Tcl can still be used. This is most useful to allow
the loading of a package which depends on tcltk in a session that
does not actually use it (e.g., during installation).
R Core Team
Maintainer: R Core Team [email protected]
These functions and variables provide the basic glue between R and the
Tcl interpreter and Tk GUI toolkit. Tk
windows may be represented via R objects. Tcl variables can be accessed
via objects of class tclVar
and the C level interface to Tcl
objects is accessed via objects of class tclObj
.
.Tcl(...) .Tcl.objv(objv) .Tcl.args(...) .Tcl.args.objv(...) .Tcl.callback(...) .Tk.ID(win) .Tk.newwin(ID) .Tk.subwin(parent) .TkRoot .TkUp tkdestroy(win) is.tkwin(x) tclvalue(x) tclvalue(x) <- value tclVar(init = "") ## S3 method for class 'tclVar' as.character(x, ...) ## S3 method for class 'tclVar' tclvalue(x) ## S3 replacement method for class 'tclVar' tclvalue(x) <- value tclArray() ## S3 method for class 'tclArray' x[[...]] ## S3 replacement method for class 'tclArray' x[[...]] <- value ## S3 method for class 'tclArray' x$i ## S3 replacement method for class 'tclArray' x$i <- value ## S3 method for class 'tclArray' names(x) ## S3 method for class 'tclArray' length(x) tclObj(x) tclObj(x) <- value ## S3 method for class 'tclVar' tclObj(x) ## S3 replacement method for class 'tclVar' tclObj(x) <- value as.tclObj(x, drop = FALSE) is.tclObj(x) ## S3 method for class 'tclObj' as.character(x, ...) ## S3 method for class 'tclObj' as.integer(x, ...) ## S3 method for class 'tclObj' as.double(x, ...) ## S3 method for class 'tclObj' as.logical(x, ...) ## S3 method for class 'tclObj' as.raw(x, ...) ## S3 method for class 'tclObj' tclvalue(x) ## Default S3 method: tclvalue(x) ## Default S3 replacement method: tclvalue(x) <- value addTclPath(path = ".") tclRequire(package, warn = TRUE) tclVersion()
.Tcl(...) .Tcl.objv(objv) .Tcl.args(...) .Tcl.args.objv(...) .Tcl.callback(...) .Tk.ID(win) .Tk.newwin(ID) .Tk.subwin(parent) .TkRoot .TkUp tkdestroy(win) is.tkwin(x) tclvalue(x) tclvalue(x) <- value tclVar(init = "") ## S3 method for class 'tclVar' as.character(x, ...) ## S3 method for class 'tclVar' tclvalue(x) ## S3 replacement method for class 'tclVar' tclvalue(x) <- value tclArray() ## S3 method for class 'tclArray' x[[...]] ## S3 replacement method for class 'tclArray' x[[...]] <- value ## S3 method for class 'tclArray' x$i ## S3 replacement method for class 'tclArray' x$i <- value ## S3 method for class 'tclArray' names(x) ## S3 method for class 'tclArray' length(x) tclObj(x) tclObj(x) <- value ## S3 method for class 'tclVar' tclObj(x) ## S3 replacement method for class 'tclVar' tclObj(x) <- value as.tclObj(x, drop = FALSE) is.tclObj(x) ## S3 method for class 'tclObj' as.character(x, ...) ## S3 method for class 'tclObj' as.integer(x, ...) ## S3 method for class 'tclObj' as.double(x, ...) ## S3 method for class 'tclObj' as.logical(x, ...) ## S3 method for class 'tclObj' as.raw(x, ...) ## S3 method for class 'tclObj' tclvalue(x) ## Default S3 method: tclvalue(x) ## Default S3 replacement method: tclvalue(x) <- value addTclPath(path = ".") tclRequire(package, warn = TRUE) tclVersion()
objv |
a named vector of Tcl objects |
win |
a window structure |
x |
an object |
i |
character or (unquoted) name |
drop |
logical. Indicates whether a single-element vector should be made into a simple Tcl object or a list of length one |
value |
For |
ID |
a window ID |
parent |
a window which becomes the parent of the resulting window |
path |
path to a directory containing Tcl packages |
package |
a Tcl package name |
warn |
logical. Warn if not found? |
... |
Additional arguments. See below. |
init |
initialization value |
Many of these functions are not intended for general use but are used
internally by the commands that create and manipulate Tk widgets and
Tcl objects. At the lowest level .Tcl
sends a command as a text
string to the Tcl interpreter and returns the result as an object of
class tclObj
(see below). A newer variant .Tcl.objv
accepts arguments in the form of a named list of tclObj
objects.
.Tcl.args
converts an R argument list of tag = value
pairs
to the Tcl -option value
style, thus
enabling a simple translation between the two languages. To send a
value with no preceding option flag to Tcl, just use an untagged
argument. In the rare case one needs an option with no subsequent
value tag = NULL
can be used. Most values are just converted to
character mode and inserted in the command string, but window objects
are passed using their ID string, and callbacks are passed via the
result of .Tcl.callback
. Tags are converted to option flags
simply by prepending a -
.Tcl.args.objv
serves a similar purpose as .Tcl.args
but
produces a list of tclObj
objects suitable for passing to
.Tcl.objv
. The names of the list are converted to Tcl option
style internally by .Tcl.objv
.
Callbacks can be either atomic callbacks handled by
.Tcl.callback
or expressions. An expression is treated as a
list of atomic callbacks, with the following exceptions: if an
element is a name, it is first evaluated in the callers frame, and
likewise if it is an explicit function definition; the break
expression is translated directly to the Tcl counterpart.
.Tcl.callback
converts R functions and unevaluated calls to
Tcl command strings. The argument must be either a function closure
or an object of mode "call"
followed by an environment. The
return value in the first case is of the form R_call
0x408b94d4
in which the hexadecimal number is the memory address of
the function. In the second case it will be of the form
R_call_lang 0x8a95904 0x819bfd0
. For expressions, a sequence
of similar items is generated, separated by
semicolons. .Tcl.args
takes special precautions to ensure
that functions or calls will continue to exist at the specified
address by assigning the
callback into the relevant window environment (see below).
Tk windows are represented as objects of class tkwin
which are
lists containing a ID
field and an env
field which is
an R environments, enclosed in the global environment. The value of
the ID
field is identical to the Tk window name. The env
environment contains a parent
variable and a num.subwin
variable. If the window obtains sub-windows and callbacks, they are
added as variables to the environment. .TkRoot
is the top
window with ID "."; this window is not displayed in order to avoid
ill effects of closing it via window manager controls. The
parent
variable is undefined for .TkRoot
.
.Tk.ID
extracts the ID
of a window,
.Tk.newwin
creates a new window environment with a given ID and
.Tk.subwin
creates a new window which is a sub-window of a given
parent window.
.TkUp
is a logical flag to indicate whether the Tk widget
system is active; if FALSE
, only the Tcl interpreter is available.
tkdestroy
destroys a window and also removes the reference to a
window from its parent.
is.tkwin
can be used to test whether a given object is a window
environment.
tclVar
creates a new Tcl variable and initializes it to
init
. An R object of class tclVar
is created to
represent it. Using as.character
on the object returns the Tcl
variable name. Accessing the Tcl variable from R is done using the
tclvalue
function, which can also occur on the left-hand side of
assignments. If tclvalue
is passed an argument which is not a
tclVar
object, then it will assume that it is a character string
explicitly naming global Tcl variable. Tcl variables created by
tclVar
are uniquely named and automatically unset by the
garbage collector when the representing object is no longer in use.
tclArray
creates a new Tcl array and initializes it to the empty
array. An R object of class tclArray
and inheriting from class
tclVar
is created to represent it. You can access elements of
the Tcl array using indexing with [[
or $
, which also
allow replacement forms. Notice that Tcl arrays are associative by
nature and hence unordered; indexing with a numeric index i
refers to the element with the name
as.character(i)
. Multiple indices are pasted together separated
by commas to form a single name. You can query the
length and the set of names in an array using methods for
length
and names
, respectively; these cannot
meaningfully be set so assignment forms exist only to print an error
message.
It is possible to access Tcl's ‘dual-ported’ objects directly,
thus avoiding parsing and deparsing of their string representation.
This works by using objects of class tclObj
. The string
representation of such objects can be extracted (but not set) using
tclvalue
and conversion to vectors of mode "character"
,
"double"
, "integer"
, "logical"
, and "raw"
is performed using the standard coercion functions as.character
,
etc. Conversely, such
vectors can be converted using as.tclObj
. There is an
ambiguity as to what should happen for length one vectors, controlled
by the drop
argument; there are cases where the distinction
matters to Tcl, although mostly it treats them equivalently. Notice
that tclvalue
and as.character
differ on an object whose
string representation has embedded spaces, the former is sometimes to
be preferred, in particular when applied to the result of
tclread
, tkgetOpenFile
, and similar functions. The
as.raw
method returns a raw vector or a list of raw vectors and
can be used to return binary data from Tcl.
The object behind a tclVar
object is extracted using
tclObj(x)
which also allows an assignment form, in which the
right hand side of the assignment is automatically converted using
as.tclObj
. There is a print method for tclObj
objects;
it prints ‘<Tcl>’ followed by the string representation of the
object. Notice that as.character
on a tclVar
object is
the name of the corresponding Tcl variable and not the value.
Tcl packages can be loaded with tclRequire
; it may be necessary
to add the directory where they are found to the Tcl search path with
addTclPath
. The return value is a class "tclObj"
object
if it succeeds, or FALSE
if it fails (when a warning is
issued). To see the current search path as an R character vector,
use:
strsplit(tclvalue('auto_path'), " ")[[1]]
The Tcl version (including patch level) is returned as a character
string (such as "8.6.3"
).
Strings containing unbalanced braces are currently not handled well in many circumstances.
TkWidgets
,
TkCommands
,
TkWidgetcmds
.
capabilities("tcltk")
to see if Tcl/Tk support was
compiled into this build of R.
tclVersion() .Tcl("format \"%s\n\" \"Hello, World!\"") f <- function() cat("HI!\n") .Tcl.callback(f) .Tcl.args(text = "Push!", command = f) # NB: Different address xyzzy <- tclVar(7913) tclvalue(xyzzy) tclvalue(xyzzy) <- "foo" as.character(xyzzy) tcl("set", as.character(xyzzy)) ## Not run: ## These cannot be run by example() but should be OK when pasted ## into an interactive R session with the tcltk package loaded top <- tktoplevel() # a Tk widget, see Tk-widgets ls(envir = top$env, all.names = TRUE) ## End(Not run) ls(envir = .TkRoot$env, all.names = TRUE) # .Tcl.args put a callback ref in here
tclVersion() .Tcl("format \"%s\n\" \"Hello, World!\"") f <- function() cat("HI!\n") .Tcl.callback(f) .Tcl.args(text = "Push!", command = f) # NB: Different address xyzzy <- tclVar(7913) tclvalue(xyzzy) tclvalue(xyzzy) <- "foo" as.character(xyzzy) tcl("set", as.character(xyzzy)) ## Not run: ## These cannot be run by example() but should be OK when pasted ## into an interactive R session with the tcltk package loaded top <- tktoplevel() # a Tk widget, see Tk-widgets ls(envir = top$env, all.names = TRUE) ## End(Not run) ls(envir = .TkRoot$env, all.names = TRUE) # .Tcl.args put a callback ref in here
This function controls or reports on the Tcl service mode, i.e., whether Tcl will respond to events.
tclServiceMode(on = NULL)
tclServiceMode(on = NULL)
on |
(logical) Whether event servicing is turned on. |
If called with on == NULL
(the default), no change is made.
Note that this blocks all Tcl/Tk activity, including for widgets from other packages. It may be better to manage mapping of windows individually.
The value of the Tcl service mode before the call.
## see demo(tkcanvas) for an example oldmode <- tclServiceMode(FALSE) # Do some work to create a nice picture. # Nothing will be displayed until... tclServiceMode(oldmode) ## another idea is to use tkwm.withdraw() ... tkwm.deiconify()
## see demo(tkcanvas) for an example oldmode <- tclServiceMode(FALSE) # Do some work to create a nice picture. # Nothing will be displayed until... tclServiceMode(oldmode) ## another idea is to use tkwm.withdraw() ... tkwm.deiconify()
Use a Tk widget to choose a directory interactively.
tk_choose.dir(default = "", caption = "Select directory")
tk_choose.dir(default = "", caption = "Select directory")
default |
which directory to show initially. |
caption |
the caption on the selection dialog. |
A length-one character vector, character NA
if
‘Cancel’ was selected.
if (interactive()) tk_choose.dir(getwd(), "Choose a suitable folder")
if (interactive()) tk_choose.dir(getwd(), "Choose a suitable folder")
Use a Tk file dialog to choose a list of zero or more files interactively.
tk_choose.files(default = "", caption = "Select files", multi = TRUE, filters = NULL, index = 1)
tk_choose.files(default = "", caption = "Select files", multi = TRUE, filters = NULL, index = 1)
default |
which filename to show initially. |
caption |
the caption on the file selection dialog. |
multi |
whether to allow multiple files to be selected. |
filters |
two-column character matrix of filename filters. |
index |
unused. |
Unlike file.choose
, tk_choose.files
will always
attempt to return a character vector giving a list of files. If the
user cancels the dialog, then zero files are returned, whereas
file.choose
would signal an error.
The format of filters
can be seen from the example. File
patterns are specified via extensions, with "*"
meaning any
file, and ""
any file without an extension (a filename not
containing a period). (Other forms may work on specific platforms.)
Note that the way to have multiple extensions for one file type is to
have multiple rows with the same name in the first column, and that
whether the extensions are named in file chooser widget is
platform-specific. The format may change before release.
A character vector giving zero or more file paths.
A bug in Tk 8.5.0–8.5.4 prevented multiple selections being used.
Filters <- matrix(c("R code", ".R", "R code", ".s", "Text", ".txt", "All files", "*"), 4, 2, byrow = TRUE) Filters if(interactive()) tk_choose.files(filter = Filters)
Filters <- matrix(c("R code", ".R", "R code", ".s", "Text", ".txt", "All files", "*"), 4, 2, byrow = TRUE) Filters if(interactive()) tk_choose.files(filter = Filters)
An implementation of a generic message box using Tk.
tk_messageBox(type = c("ok", "okcancel", "yesno", "yesnocancel", "retrycancel", "abortretryignore"), message, caption = "", default = "", ...)
tk_messageBox(type = c("ok", "okcancel", "yesno", "yesnocancel", "retrycancel", "abortretryignore"), message, caption = "", default = "", ...)
type |
character. The type of dialog box. It will have the buttons implied by its name. Can be abbreviated. |
message |
character. The information field of the dialog box. |
caption |
the caption on the widget displayed. |
default |
character. The name of the button to be used as the default. |
... |
additional named arguments to be passed to the Tk
function of this name. An example is |
A character string giving the name of the button pressed.
tkmessageBox
for a ‘raw’ interface.
Select item(s) from a character vector using a Tk listbox.
tk_select.list(choices, preselect = NULL, multiple = FALSE, title = NULL)
tk_select.list(choices, preselect = NULL, multiple = FALSE, title = NULL)
choices |
a character vector of items. |
preselect |
a character vector, or |
multiple |
logical: can more than one item be selected? |
title |
optional character string for window title, or
|
This is a version of select.list
implemented as a Tk
list box plus OK
and Cancel
buttons. There will be a
scrollbar if the list is too long to fit comfortably on the screen.
The dialog box is modal, so a selection must be made or
cancelled before the R session can proceed. Double-clicking on an
item is equivalent to selecting it and then clicking OK
.
If Tk is version 8.5 or later, themed widgets will be used.
A character vector of selected items. If multiple
is false and
no item was selected (or Cancel
was used), ""
is
returned. If multiple
is true and no item was selected (or
Cancel
was used) then a character vector of length 0 is returned.
select.list
(a text version except on Windows and the macOS GUI),
menu
(whose graphics = TRUE
mode uses this
on most Unix-alikes).
These functions interface to Tk non-widget commands, such as the window manager interface commands and the geometry managers.
tcl(...) tktitle(x) tktitle(x) <- value tkbell(...) tkbind(...) tkbindtags(...) tkfocus(...) tklower(...) tkraise(...) tkclipboard.append(...) tkclipboard.clear(...) tkevent.add(...) tkevent.delete(...) tkevent.generate(...) tkevent.info(...) tkfont.actual(...) tkfont.configure(...) tkfont.create(...) tkfont.delete(...) tkfont.families(...) tkfont.measure(...) tkfont.metrics(...) tkfont.names(...) tkgrab(...) tkgrab.current(...) tkgrab.release(...) tkgrab.set(...) tkgrab.status(...) tkimage.create(...) tkimage.delete(...) tkimage.height(...) tkimage.inuse(...) tkimage.names(...) tkimage.type(...) tkimage.types(...) tkimage.width(...) ## NB: some widgets also have a selection.clear command, ## hence the "X". tkXselection.clear(...) tkXselection.get(...) tkXselection.handle(...) tkXselection.own(...) tkwait.variable(...) tkwait.visibility(...) tkwait.window(...) ## winfo actually has a large number of subcommands, ## but it's rarely used, ## so use tkwinfo("atom", ...) etc. instead. tkwinfo(...) # Window manager interface tkwm.aspect(...) tkwm.client(...) tkwm.colormapwindows(...) tkwm.command(...) tkwm.deiconify(...) tkwm.focusmodel(...) tkwm.frame(...) tkwm.geometry(...) tkwm.grid(...) tkwm.group(...) tkwm.iconbitmap(...) tkwm.iconify(...) tkwm.iconmask(...) tkwm.iconname(...) tkwm.iconposition(...) tkwm.iconwindow(...) tkwm.maxsize(...) tkwm.minsize(...) tkwm.overrideredirect(...) tkwm.positionfrom(...) tkwm.protocol(...) tkwm.resizable(...) tkwm.sizefrom(...) tkwm.state(...) tkwm.title(...) tkwm.transient(...) tkwm.withdraw(...) ### Geometry managers tkgrid(...) tkgrid.bbox(...) tkgrid.columnconfigure(...) tkgrid.configure(...) tkgrid.forget(...) tkgrid.info(...) tkgrid.location(...) tkgrid.propagate(...) tkgrid.rowconfigure(...) tkgrid.remove(...) tkgrid.size(...) tkgrid.slaves(...) tkpack(...) tkpack.configure(...) tkpack.forget(...) tkpack.info(...) tkpack.propagate(...) tkpack.slaves(...) tkplace(...) tkplace.configure(...) tkplace.forget(...) tkplace.info(...) tkplace.slaves(...) ## Standard dialogs tkgetOpenFile(...) tkgetSaveFile(...) tkchooseDirectory(...) tkmessageBox(...) tkdialog(...) tkpopup(...) ## File handling functions tclfile.tail(...) tclfile.dir(...) tclopen(...) tclclose(...) tclputs(...) tclread(...)
tcl(...) tktitle(x) tktitle(x) <- value tkbell(...) tkbind(...) tkbindtags(...) tkfocus(...) tklower(...) tkraise(...) tkclipboard.append(...) tkclipboard.clear(...) tkevent.add(...) tkevent.delete(...) tkevent.generate(...) tkevent.info(...) tkfont.actual(...) tkfont.configure(...) tkfont.create(...) tkfont.delete(...) tkfont.families(...) tkfont.measure(...) tkfont.metrics(...) tkfont.names(...) tkgrab(...) tkgrab.current(...) tkgrab.release(...) tkgrab.set(...) tkgrab.status(...) tkimage.create(...) tkimage.delete(...) tkimage.height(...) tkimage.inuse(...) tkimage.names(...) tkimage.type(...) tkimage.types(...) tkimage.width(...) ## NB: some widgets also have a selection.clear command, ## hence the "X". tkXselection.clear(...) tkXselection.get(...) tkXselection.handle(...) tkXselection.own(...) tkwait.variable(...) tkwait.visibility(...) tkwait.window(...) ## winfo actually has a large number of subcommands, ## but it's rarely used, ## so use tkwinfo("atom", ...) etc. instead. tkwinfo(...) # Window manager interface tkwm.aspect(...) tkwm.client(...) tkwm.colormapwindows(...) tkwm.command(...) tkwm.deiconify(...) tkwm.focusmodel(...) tkwm.frame(...) tkwm.geometry(...) tkwm.grid(...) tkwm.group(...) tkwm.iconbitmap(...) tkwm.iconify(...) tkwm.iconmask(...) tkwm.iconname(...) tkwm.iconposition(...) tkwm.iconwindow(...) tkwm.maxsize(...) tkwm.minsize(...) tkwm.overrideredirect(...) tkwm.positionfrom(...) tkwm.protocol(...) tkwm.resizable(...) tkwm.sizefrom(...) tkwm.state(...) tkwm.title(...) tkwm.transient(...) tkwm.withdraw(...) ### Geometry managers tkgrid(...) tkgrid.bbox(...) tkgrid.columnconfigure(...) tkgrid.configure(...) tkgrid.forget(...) tkgrid.info(...) tkgrid.location(...) tkgrid.propagate(...) tkgrid.rowconfigure(...) tkgrid.remove(...) tkgrid.size(...) tkgrid.slaves(...) tkpack(...) tkpack.configure(...) tkpack.forget(...) tkpack.info(...) tkpack.propagate(...) tkpack.slaves(...) tkplace(...) tkplace.configure(...) tkplace.forget(...) tkplace.info(...) tkplace.slaves(...) ## Standard dialogs tkgetOpenFile(...) tkgetSaveFile(...) tkchooseDirectory(...) tkmessageBox(...) tkdialog(...) tkpopup(...) ## File handling functions tclfile.tail(...) tclfile.dir(...) tclopen(...) tclclose(...) tclputs(...) tclread(...)
x |
A window object |
value |
For |
... |
Handled via |
tcl
provides a generic interface to calling any Tk or Tcl
command by simply running .Tcl.args.objv
on the argument list
and passing the
result to .Tcl.objv
. Most of the other commands simply call
tcl
with a particular
first argument and sometimes also a second argument giving the
subcommand.
tktitle
and its assignment form provides an alternate interface
to Tk's wm title
There are far too many of these commands to describe them and their
arguments in full. Please refer to the Tcl/Tk documentation for details.
With a few exceptions, the pattern is that Tk subcommands like
pack configure
are converted to function names like
tkpack.configure
, and Tcl subcommands are like
tclfile.dir
.
TclInterface
, TkWidgets
,
TkWidgetcmds
## Not run: ## These cannot be run by examples() but should be OK when pasted ## into an interactive R session with the tcltk package loaded tt <- tktoplevel() tkpack(l1 <- tklabel(tt, text = "Heave"), l2 <- tklabel(tt, text = "Ho")) tkpack.configure(l1, side = "left") ## Try stretching the window and then tkdestroy(tt) ## End(Not run)
## Not run: ## These cannot be run by examples() but should be OK when pasted ## into an interactive R session with the tcltk package loaded tt <- tktoplevel() tkpack(l1 <- tklabel(tt, text = "Heave"), l2 <- tklabel(tt, text = "Ho")) tkpack.configure(l1, side = "left") ## Try stretching the window and then tkdestroy(tt) ## End(Not run)
This plugs into file.show
, showing files in separate windows.
tkpager(file, header, title, delete.file)
tkpager(file, header, title, delete.file)
file |
character vector containing the names of the files to be displayed |
header |
headers to use for each file |
title |
common title to use for the window(s). Pasted together
with the |
delete.file |
logical. Should file(s) be deleted after display? |
The "\b_"
string used for underlining is currently
quietly removed. The font and background colour are currently
hardcoded to Courier and gray90.
Put up a Tk progress bar widget.
tkProgressBar(title = "R progress bar", label = "", min = 0, max = 1, initial = 0, width = 300) getTkProgressBar(pb) setTkProgressBar(pb, value, title = NULL, label = NULL) ## S3 method for class 'tkProgressBar' close(con, ...)
tkProgressBar(title = "R progress bar", label = "", min = 0, max = 1, initial = 0, width = 300) getTkProgressBar(pb) setTkProgressBar(pb, value, title = NULL, label = NULL) ## S3 method for class 'tkProgressBar' close(con, ...)
title , label
|
character strings, giving the window title and the label on the dialog box respectively. |
min , max
|
(finite) numeric values for the extremes of the progress bar. |
initial , value
|
initial or new value for the progress bar. |
width |
the width of the progress bar in pixels: the dialog box will be 40 pixels wider (plus frame). |
pb , con
|
an object of class |
... |
for consistency with the generic. |
tkProgressBar
will display a widget containing a label and
progress bar.
setTkProgessBar
will update the value and for non-NULL
values, the title and label (provided there was one when the widget
was created). Missing (NA
) and out-of-range values of
value
will be (silently) ignored.
The progress bar should be close
d when finished with.
This will use the ttk::progressbar
widget for Tk version 8.5 or
later, otherwise R's copy of BWidget's progressbar
.
For tkProgressBar
an object of class "tkProgressBar"
.
For getTkProgressBar
and setTkProgressBar
, a
length-one numeric vector giving the previous value (invisibly for
setTkProgressBar
).
pb <- tkProgressBar("test progress bar", "Some information in %", 0, 100, 50) Sys.sleep(0.5) u <- c(0, sort(runif(20, 0, 100)), 100) for(i in u) { Sys.sleep(0.1) info <- sprintf("%d%% done", round(i)) setTkProgressBar(pb, i, sprintf("test (%s)", info), info) } Sys.sleep(5) close(pb)
pb <- tkProgressBar("test progress bar", "Some information in %", 0, 100, 50) Sys.sleep(0.5) u <- c(0, sort(runif(20, 0, 100)), 100) for(i in u) { Sys.sleep(0.1) info <- sprintf("%d%% done", round(i)) setTkProgressBar(pb, i, sprintf("test (%s)", info), info) } Sys.sleep(5) close(pb)
Starts up the Tcl/Tk GUI
tkStartGUI()
tkStartGUI()
Starts a GUI console implemented via a Tk text widget. This should
probably be called at most once per session. Also redefines the file
pager (as used by help()
) to be the Tk pager.
tkStartGUI()
saves its evaluation environment as
.GUIenv
. This means that the user interface elements can be
accessed in order to extend the interface. The three main objects are
named Term
, Menu
, and Toolbar
, and the various
submenus and callback functions can be seen with
ls(envir = .GUIenv)
.
Peter Dalgaard
These functions interface to Tk widget commands.
tkactivate(widget, ...) tkadd(widget, ...) tkaddtag(widget, ...) tkbbox(widget, ...) tkcanvasx(widget, ...) tkcanvasy(widget, ...) tkcget(widget, ...) tkcompare(widget, ...) tkconfigure(widget, ...) tkcoords(widget, ...) tkcreate(widget, ...) tkcurselection(widget, ...) tkdchars(widget, ...) tkdebug(widget, ...) tkdelete(widget, ...) tkdelta(widget, ...) tkdeselect(widget, ...) tkdlineinfo(widget, ...) tkdtag(widget, ...) tkdump(widget, ...) tkentrycget(widget, ...) tkentryconfigure(widget, ...) tkfind(widget, ...) tkflash(widget, ...) tkfraction(widget, ...) tkget(widget, ...) tkgettags(widget, ...) tkicursor(widget, ...) tkidentify(widget, ...) tkindex(widget, ...) tkinsert(widget, ...) tkinvoke(widget, ...) tkitembind(widget, ...) tkitemcget(widget, ...) tkitemconfigure(widget, ...) tkitemfocus(widget, ...) tkitemlower(widget, ...) tkitemraise(widget, ...) tkitemscale(widget, ...) tkmark.gravity(widget, ...) tkmark.names(widget, ...) tkmark.next(widget, ...) tkmark.previous(widget, ...) tkmark.set(widget, ...) tkmark.unset(widget, ...) tkmove(widget, ...) tknearest(widget, ...) tkpost(widget, ...) tkpostcascade(widget, ...) tkpostscript(widget, ...) tkscan.mark(widget, ...) tkscan.dragto(widget, ...) tksearch(widget, ...) tksee(widget, ...) tkselect(widget, ...) tkselection.adjust(widget, ...) tkselection.anchor(widget, ...) tkselection.clear(widget, ...) tkselection.from(widget, ...) tkselection.includes(widget, ...) tkselection.present(widget, ...) tkselection.range(widget, ...) tkselection.set(widget, ...) tkselection.to(widget, ...) tkset(widget, ...) tksize(widget, ...) tktoggle(widget, ...) tktag.add(widget, ...) tktag.bind(widget, ...) tktag.cget(widget, ...) tktag.configure(widget, ...) tktag.delete(widget, ...) tktag.lower(widget, ...) tktag.names(widget, ...) tktag.nextrange(widget, ...) tktag.prevrange(widget, ...) tktag.raise(widget, ...) tktag.ranges(widget, ...) tktag.remove(widget, ...) tktype(widget, ...) tkunpost(widget, ...) tkwindow.cget(widget, ...) tkwindow.configure(widget, ...) tkwindow.create(widget, ...) tkwindow.names(widget, ...) tkxview(widget, ...) tkxview.moveto(widget, ...) tkxview.scroll(widget, ...) tkyposition(widget, ...) tkyview(widget, ...) tkyview.moveto(widget, ...) tkyview.scroll(widget, ...)
tkactivate(widget, ...) tkadd(widget, ...) tkaddtag(widget, ...) tkbbox(widget, ...) tkcanvasx(widget, ...) tkcanvasy(widget, ...) tkcget(widget, ...) tkcompare(widget, ...) tkconfigure(widget, ...) tkcoords(widget, ...) tkcreate(widget, ...) tkcurselection(widget, ...) tkdchars(widget, ...) tkdebug(widget, ...) tkdelete(widget, ...) tkdelta(widget, ...) tkdeselect(widget, ...) tkdlineinfo(widget, ...) tkdtag(widget, ...) tkdump(widget, ...) tkentrycget(widget, ...) tkentryconfigure(widget, ...) tkfind(widget, ...) tkflash(widget, ...) tkfraction(widget, ...) tkget(widget, ...) tkgettags(widget, ...) tkicursor(widget, ...) tkidentify(widget, ...) tkindex(widget, ...) tkinsert(widget, ...) tkinvoke(widget, ...) tkitembind(widget, ...) tkitemcget(widget, ...) tkitemconfigure(widget, ...) tkitemfocus(widget, ...) tkitemlower(widget, ...) tkitemraise(widget, ...) tkitemscale(widget, ...) tkmark.gravity(widget, ...) tkmark.names(widget, ...) tkmark.next(widget, ...) tkmark.previous(widget, ...) tkmark.set(widget, ...) tkmark.unset(widget, ...) tkmove(widget, ...) tknearest(widget, ...) tkpost(widget, ...) tkpostcascade(widget, ...) tkpostscript(widget, ...) tkscan.mark(widget, ...) tkscan.dragto(widget, ...) tksearch(widget, ...) tksee(widget, ...) tkselect(widget, ...) tkselection.adjust(widget, ...) tkselection.anchor(widget, ...) tkselection.clear(widget, ...) tkselection.from(widget, ...) tkselection.includes(widget, ...) tkselection.present(widget, ...) tkselection.range(widget, ...) tkselection.set(widget, ...) tkselection.to(widget, ...) tkset(widget, ...) tksize(widget, ...) tktoggle(widget, ...) tktag.add(widget, ...) tktag.bind(widget, ...) tktag.cget(widget, ...) tktag.configure(widget, ...) tktag.delete(widget, ...) tktag.lower(widget, ...) tktag.names(widget, ...) tktag.nextrange(widget, ...) tktag.prevrange(widget, ...) tktag.raise(widget, ...) tktag.ranges(widget, ...) tktag.remove(widget, ...) tktype(widget, ...) tkunpost(widget, ...) tkwindow.cget(widget, ...) tkwindow.configure(widget, ...) tkwindow.create(widget, ...) tkwindow.names(widget, ...) tkxview(widget, ...) tkxview.moveto(widget, ...) tkxview.scroll(widget, ...) tkyposition(widget, ...) tkyview(widget, ...) tkyview.moveto(widget, ...) tkyview.scroll(widget, ...)
widget |
The widget this applies to |
... |
Handled via |
There are far too many of these commands to describe them and their
arguments in full. Please refer to the Tcl/Tk documentation for details.
Except for a few exceptions, the pattern is that Tcl widget commands
possibly with subcommands like
.a.b selection clear
are converted to function names like
tkselection.clear
and the widget is given as the first argument.
TclInterface
, TkWidgets
,
TkCommands
## Not run: ## These cannot be run by examples() but should be OK when pasted ## into an interactive R session with the tcltk package loaded tt <- tktoplevel() tkpack(txt.w <- tktext(tt)) tkinsert(txt.w, "0.0", "plot(1:10)") # callback function eval.txt <- function() eval(str2lang(tclvalue(tkget(txt.w, "0.0", "end")))) tkpack(but.w <- tkbutton(tt, text = "Submit", command = eval.txt)) ## Try pressing the button, edit the text and when finished: tkdestroy(tt) ## End(Not run)
## Not run: ## These cannot be run by examples() but should be OK when pasted ## into an interactive R session with the tcltk package loaded tt <- tktoplevel() tkpack(txt.w <- tktext(tt)) tkinsert(txt.w, "0.0", "plot(1:10)") # callback function eval.txt <- function() eval(str2lang(tclvalue(tkget(txt.w, "0.0", "end")))) tkpack(but.w <- tkbutton(tt, text = "Submit", command = eval.txt)) ## Try pressing the button, edit the text and when finished: tkdestroy(tt) ## End(Not run)
Create Tk widgets and associated R objects.
tkwidget(parent, type, ...) tkbutton(parent, ...) tkcanvas(parent, ...) tkcheckbutton(parent, ...) tkentry(parent, ...) ttkentry(parent, ...) tkframe(parent, ...) tklabel(parent, ...) tklistbox(parent, ...) tkmenu(parent, ...) tkmenubutton(parent, ...) tkmessage(parent, ...) tkradiobutton(parent, ...) tkscale(parent, ...) tkscrollbar(parent, ...) tktext(parent, ...) tktoplevel(parent = .TkRoot, ...) ttkbutton(parent, ...) ttkcheckbutton(parent, ...) ttkcombobox(parent, ...) ttkframe(parent, ...) ttklabel(parent, ...) ttklabelframe(parent, ...) ttkmenubutton(parent, ...) ttknotebook(parent, ...) ttkpanedwindow(parent, ...) ttkprogressbar(parent, ...) ttkradiobutton(parent, ...) ttkscale(parent, ...) ttkscrollbar(parent, ...) ttkseparator(parent, ...) ttksizegrip(parent, ...) ttkspinbox(parent, ...) ttktreeview(parent, ...)
tkwidget(parent, type, ...) tkbutton(parent, ...) tkcanvas(parent, ...) tkcheckbutton(parent, ...) tkentry(parent, ...) ttkentry(parent, ...) tkframe(parent, ...) tklabel(parent, ...) tklistbox(parent, ...) tkmenu(parent, ...) tkmenubutton(parent, ...) tkmessage(parent, ...) tkradiobutton(parent, ...) tkscale(parent, ...) tkscrollbar(parent, ...) tktext(parent, ...) tktoplevel(parent = .TkRoot, ...) ttkbutton(parent, ...) ttkcheckbutton(parent, ...) ttkcombobox(parent, ...) ttkframe(parent, ...) ttklabel(parent, ...) ttklabelframe(parent, ...) ttkmenubutton(parent, ...) ttknotebook(parent, ...) ttkpanedwindow(parent, ...) ttkprogressbar(parent, ...) ttkradiobutton(parent, ...) ttkscale(parent, ...) ttkscrollbar(parent, ...) ttkseparator(parent, ...) ttksizegrip(parent, ...) ttkspinbox(parent, ...) ttktreeview(parent, ...)
parent |
Parent of widget window. |
type |
string describing the type of widget desired. |
... |
handled via |
These functions create Tk widgets. tkwidget
creates a widget of
a given type, the others simply call tkwidget
with the
respective type
argument.
The functions starting ttk
are for the themed widget set for Tk
8.5 or later. A tutorial can be found at https://tkdocs.com/.
It is not possible to describe the widgets and their arguments in full. Please refer to the Tcl/Tk documentation.
TclInterface
, TkCommands
,
TkWidgetcmds
## Not run: ## These cannot be run by examples() but should be OK when pasted ## into an interactive R session with the tcltk package loaded tt <- tktoplevel() label.widget <- tklabel(tt, text = "Hello, World!") button.widget <- tkbutton(tt, text = "Push", command = function()cat("OW!\n")) tkpack(label.widget, button.widget) # geometry manager # see Tk-commands ## Push the button and then... tkdestroy(tt) ## test for themed widgets if(as.character(tcl("info", "tclversion")) >= "8.5") { # make use of themed widgets # list themes themes <- as.character(tcl("ttk::style", "theme", "names")) themes # select a theme -- for pre-XP windows # tcl("ttk::style", "theme", "use", "winnative") tcl("ttk::style", "theme", "use", themes[1]) } else { # use Tk 8.0 widgets } ## End(Not run)
## Not run: ## These cannot be run by examples() but should be OK when pasted ## into an interactive R session with the tcltk package loaded tt <- tktoplevel() label.widget <- tklabel(tt, text = "Hello, World!") button.widget <- tkbutton(tt, text = "Push", command = function()cat("OW!\n")) tkpack(label.widget, button.widget) # geometry manager # see Tk-commands ## Push the button and then... tkdestroy(tt) ## test for themed widgets if(as.character(tcl("info", "tclversion")) >= "8.5") { # make use of themed widgets # list themes themes <- as.character(tcl("ttk::style", "theme", "names")) themes # select a theme -- for pre-XP windows # tcl("ttk::style", "theme", "use", "winnative") tcl("ttk::style", "theme", "use", themes[1]) } else { # use Tk 8.0 widgets } ## End(Not run)