[R] set tkscale by tkentry
Alexander
juschitz_alexander at yahoo.de
Fri May 25 08:58:12 CEST 2012
Hi Greg and jverzaniNWBKZ,
thank you very much for your help. I already thought about your solution
jverzaniNWBKZ. I hoped I could find a simpler solution (such as refering to
the global variable of scale). As this is not possible for some intervals, I
will take your solution.
Thanks again for the quick answers!!!
jverzaniNWBKZ wrote
>
> Greg Snow <538280 <at> gmail.com> writes:
>
>>
>> I believe that what is happening is that when you try to edit the
>> entry widget any intermediate values get sent to the slider widget
>> which then checks to see if they are in the allowable range and if it
>> is not then it sets the value to either the minimum and maximum and
>> sends that back to the entry widget while you are still trying to edit
>> it. Even if you highlight a single digit and try to replace it with a
>> different digit it first deletes the highlighted digit resulting in a
>> number smaller than the minimum of the slider which then updates the
>> entry widget to the minimum before the new digit can go in, then
>> adding the new digit makes it larger than the slider maximum.
>>
>
> Greg is right. You might try validating on focusout, rather than the key,
> but this is easy enough to do in R code, rather than let tcl do that work:
>
> a <- 306870; b <- 3026741
>
> tt<-tktoplevel()
> varalpha <- tclVar(a)
> charalpha <- tclVar(as.character(a))
>
>
> scale <- tkscale(tt, from=a, to=b, resolution=1, label="alpha",
> variable=varalpha,
> showvalue=TRUE, orient="horiz")
> ed <- tkentry(tt, textvariable=charalpha)
>
> tkpack(ed)
> tkpack(scale)
>
> ## connect
> tkconfigure(scale, command=function(...) {
> tclvalue(charalpha) <- as.character(tclvalue(varalpha))
> })
>
> valid_input <- function(...) {
> val <- as.numeric(tclvalue(charalpha))
> if(a <= val & val <= b) {
> message("set to ", val)
> tclvalue(varalpha) <- val
> } else {
> message("not valid...")
> tkfocus(ed)
> }
> }
>
> tkbind(ed, "<Return>", valid_input)
> tkbind(ed, "<FocusOut>", valid_input)
>
> ______________________________________________
> R-help@ mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
--
View this message in context: http://r.789695.n4.nabble.com/set-tkscale-by-tkentry-tp4631174p4631281.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list