| tk2theme {tcltk2} | R Documentation |
In tcltk2, we propose a replacement for standard tcltk widgets. These new widgets can be "themed", that is, adapted to take various visual appearances. It can get the visual appearance of various Unix/Linux systems, of Windows (including XP) and of Aqua under MacOS. Custom themes can also be defined, or imported from GTK.
tk2theme(theme = NULL) tk2theme.list() tk2theme.elements()
theme |
The new theme to use |
A list of available themes for tk2therme.list() or of theme elements
for tk2theme.elements()
Themes are provided by the tk package Tile (currently in version 0.6.2). It is automatically installed under Windows, but for other platforms, you must download and compile Tile yourself (http://tktable.sourceforge.net/tile/)
Philippe Grosjean
## Not run:
## These cannot be run by examples() but should be OK when pasted
## into an interactive R session with the tcltk package loaded
## Test all themes one after the other on the demo window
tk2demo <- function() {
tt <- tktoplevel()
tktitle(tt) <- "tk2 demo"
## Change icon (under Windows)
Info <- tk2ico.load(res = "information")
tk2ico.set(tt, Info)
tk2ico.destroy(Info)
## Add a menu with quit and all themes
topMenu <- tk2menu(tt)
tkconfigure(tt, menu = topMenu)
fileMenu <- tk2menu(topMenu, tearoff = FALSE)
tkadd(fileMenu, "command", label = "Quit",
command = function() tkdestroy(tt))
tkadd(topMenu, "cascade", label = "File", menu = fileMenu)
Themes <- sort(tk2theme.list())
themeMenu <- tk2menu(topMenu, tearoff = FALSE)
for (i in 1:length(Themes)) {
tkadd(themeMenu, "command", label = Themes[i],
command = eval(parse(text = paste("function() tk2theme(\"", Themes[i], "\")",
sep = ""))))
}
tkadd(topMenu, "cascade", label = "Theme", menu = themeMenu)
#### TO DO: Add a toolbar
## Add a notebook with three tabs
nb <- tk2notebook(tt)
tcli1 <- tk2frame(nb)
tkadd(nb, tcli1, text = "Tab 1")
tcli2 <- tk2label(nb, text = "Nothing here.")
tkadd(nb, tcli2, text = "Tab 2")
tcli3 <- tk2label(nb, text = "Nothing here either.")
tkadd(nb, tcli3, text = "Tab 3")
tkselect(nb, tcli1)
tkgrid(nb)
## Add a labelframe with new tile widgets
tfrm1 <- tk2labelframe(tcli1, text = "tile widgets")
tkgrid(tfrm1)
# Add a label
tlab <- tk2label(tfrm1, text = "This is a label... hover me to see a tooltip")
tkgrid(tlab)
# Define a tooltip for the label
tk2tip(tlab, "A tooltip for the label \ndisplayed on two lines")
# Add a button
but <- tk2button(tfrm1, text = "Click me", width = 12,
command = function() tkmessageBox(title = "tk2 demo",
message = "Hello, world!", icon = "info", type = "ok"))
tkgrid(but)
# Add a checkbutton
tcb <- tk2checkbutton(tfrm1, text = " A check button")
tkgrid(tcb)
# Add radio buttons
rbValue <- tclVar("oranges")
rb1 <- tk2radiobutton(tfrm1, text = " Apples", variable = rbValue,
value = "apples")
rb2 <- tk2radiobutton(tfrm1, text = " Oranges", variable = rbValue,
value = "oranges")
tkgrid(rb1, sticky = "w")
tkgrid(rb2, sticky = "w")
# Add a progressbar
tprog <- tk2progress(tfrm1, orient = "horizontal", from = 0, to = 100)
tkgrid(tprog)
tkset(tprog, 0.5)
# Add a slider #### TO DO: fix command!
tscal <- tk2scale(tfrm1, orient = "horizontal", from = 0, to = 100,
command = tkset(tprog, 0.2))
tkgrid(tscal)
## Add a labelframe with additional widgets
tfrm2 <- tk2labelframe(tcli1, text = "additional widgets", width = 50)
tkgrid(tfrm2)
# Add a combobox
cb <- tk2combobox(tfrm2, value = "Banana")
tkgrid(cb)
# Fill the combobox list
fruits <- c("Apple", "Orange", "Banana", "Pear")
# TO DO: change this!!!
#for (i in (1:4))
# tk2listinsert(cb, "end", fruits[i])
tkinsert(cb, "end", "pear")
tkfocus(tt)
return(TRUE)
}
tk2demo()
themes <- tk2theme.list()
for (i in 1:length(themes)) {
tk2theme(themes[i])
Sys.sleep(2)
}
## End(Not run)