Training, Open Source computer languages

This is page http://www.wellho.net/forum/The-Tcl- ... guage/TK-error-button-command-within-a-procedure.html

Our email: info@wellho.net • Phone: 01144 1225 708225

 
For 2023 (and 2024 ...) - we are now fully retired from IT training.
We have made many, many friends over 25 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Linux and Solaris/SunOS too. Our training notes are now very much out of date, but due to upward compatability most of our examples remain operational and even relevant ad you are welcome to make us if them "as seen" and at your own risk.

Lisa and I (Graham) now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We are far from inactive - rather, enjoying the times that we are retired but still healthy enough in mind and body to be active!

I am also active in many other area and still look after a lot of web sites - you can find an index ((here))
TK error - button command within a procedure

Posted by dvorak_user (dvorak_user), 12 January 2008
edit: I sidestepped the issue and got my program to run properly, but I'd still like an answer. Much appreciated!

Hello, all! I'm working on a script with a portion similar to the code below. I can't get it to work quite right, however.

version 1:
Code:
proc something {} {
     set dir "C:\\"
     button .b -text "press me" -command {set temp [tk_getOpenFile -initialdir $dir]}
     pack .b
}
something

result: when button is pressed, I get 'Error: can't read "dir": no such variable'

version 2:
Code:
proc something {} {
     set dir "C:\\"
     button .b -text "press me" -command "set temp [tk_getOpenFile -initialdir $dir]"
     pack .b
}
something

result: prompted to choose a file before button loads.

I really don't know where this script is going wrong, and any help would be appreciated. Thank you!

Posted by admin (Graham Ellis), 13 January 2008
An excellent question.

Curly braces are a deferred block, so the command is stored as you define it and is evaluated later on (and in the root or global context).   But double quoted, the block is evaluated at the time that the proc is run and the component is defined, and in the scope of the proc.

Posted by dvorak_user (dvorak_user), 13 January 2008
Thanks for your explanation - that certainly cleared things up! Much obliged.



This page is a thread posted to the opentalk forum at www.opentalk.org.uk and archived here for reference. To jump to the archive index please follow this link.

© WELL HOUSE CONSULTANTS LTD., 2024: Well House Manor • 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • FAX: 01144 1225 793803 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho