[R-gui] one-column tk2mclistbox
Philippe Grosjean
phgrosjean at sciviews.org
Sat Mar 29 23:40:45 CET 2008
Hello Eduardo,
Regarding the problem with a single column, your request of alternate
row background, and other limitations of the tk2mclistbox, I am
considering to change for a better implementation of this widget in
Tcl/Tk: tablelist, see:
http://www.davidmarshall.net/doc/tablelist-4.0/tablelist.html.
Either, you wait for the next tcltk2 release (depending on my free
time), or you can anticipate. Just look in the tcltk2 code on how
tk2mclistbox is implemented, and you should figure out how to replace it
by tablelist, or better, tablelist_tile. Tablelist is written in pure
Tcl. So, you don't need to compile it and the code runs on all R
supported platforms.
Best,
Philippe Grosjean
..............................................<°}))><........
) ) ) ) )
( ( ( ( ( Prof. Philippe Grosjean
) ) ) ) )
( ( ( ( ( Numerical Ecology of Aquatic Systems
) ) ) ) ) Mons-Hainaut University, Belgium
( ( ( ( (
..............................................................
eduardo san miguel wrote:
> Hello,
>
> I have a tk2mclistbox displaying some data (a matrix).
> It works OK while ncol(matrix) > 1; but when matrix is one-columned, only
> the first row seems to be displayed.
> what am I missing?
>
> And talking about tk2mclistbox, is there a way to display rows with
> different (alternate) background colors?
>
> Thanks.
> Eduardo San Miguel
>
>
> require(tcltk2)
>
> fillt <- function() {
> nCols = as.numeric(tkget(tl.e1))
> nRows = as.numeric(tkget(tl.e2))
>
> # remove existing columns
> COLUMNS <- tclvalue(.Tcl( paste( tl.t, 'column names')))
> for (i in 1:length(COLUMNS)){
> .Tcl( paste( tl.t, 'column delete', COLUMNS[i]))
> }
>
> # generate matrix
> data = matrix(rnorm(nRows*nCols), nc = nCols)
>
> # tricky way to display one-column data
> # auxcol <- matrix(rep(0, dim(data)[1]), ncol = 1)
> # tk2column(tl.t, 'add', 'auxcol', label = 'auxcol',
> # width = 20)
> # tk2column(tl.t,'configure', 'auxcol', visible = 0)
>
> # insert data
> for (i in 1:dim(data)[2]){
> tk2column(tl.t, 'add', paste('col_',i, sep =''),
> label = paste('col_',i, sep =''), width = 20)
> }
>
>
> # tricky way to display one-column data
> # data = cbind(auxcol, data)
> tk2insert.multi(tl.t, 'end', data)
>
> tkconfigure(tl.t, columnborderwidth = 1)
> tkconfigure(tl.t, columnbd = 1)
> }
>
> tl <- tktoplevel()
>
> tl.f1 <- tk2frame(tl)
> tl.l1 <- tk2label(tl.f1, text = 'N Cols:')
> tl.l2 <- tk2label(tl.f1, text = 'N Rows:')
> tl.e1 <- tk2entry(tl.f1 ,'n Cols ', width = 5)
> tl.e2 <- tk2entry(tl.f1 ,'n Rows ', width = 5)
> tl.f1.b <- tk2button(tl.f1, ' ', text = 'Show Matrix',
> command = fillt)
> tl.f1.b1 <- tk2button(tl.f1, ' ', text = 'Close',
> command = function() tkdestroy(tl))
>
> tl.f2 <- tk2frame(tl)
> tl.t <- tk2mclistbox(tl.f2, width = 84, resizablecolumns = TRUE)
> tl.scr_1 <- tk2scrollbar(tl.f2, orient = 'vertical')
> tl.scr_2 <- tk2scrollbar(tl.f2, orient = 'horizontal')
>
> tkconfigure(tl.t, yscrollcommand = function(...) tkset(tl.scr_1, ...))
> tkconfigure(tl.scr_1, command = function(...) tkyview(tl.t, ...))
> tkconfigure(tl.t, xscrollcommand = function(...) tkset(tl.scr_2, ...))
> tkconfigure(tl.scr_2, command = function(...) tkxview(tl.t, ...))
>
> tkpack(tl.scr_2, side = 'bottom', fill = 'x')
> tkpack(tl.scr_1, side = 'right', fill = 'y')
> tkpack(tl.t, fill = 'both', expand = 1)
>
> tkgrid(tl.f1)
> tkgrid(tl.l1, row = 0, column = 0)
> tkgrid(tl.e1, row = 0, column = 1)
> tkgrid(tl.l2, row = 0, column = 2)
> tkgrid(tl.e2, row = 0, column = 3)
> tkgrid(tl.f1.b, row = 0, column = 4)
> tkgrid(tl.f1.b1, row = 0, column = 5)
> tkgrid(tl.f2)
>
> tkconfigure(tl.t, relief = 'sunk')
> tkbind(tl.t,'<Enter>',function() tkfocus(tl.t))
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> R-SIG-GUI mailing list
> R-SIG-GUI at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-gui
>
More information about the R-SIG-GUI
mailing list