Why do Tcler suggest to brace your `expr`essions?

The “problem” with expr is that it implements its own “mini language”, which includes, among other things, variable substitution (replacing those $a-s with their values) and command substitution (replacing those [command …] things with the results of running commands), so basically the process of evaluating expr $a + $b goes like this: The Tcl interpreter … Read more

Callback to python function from Tkinter Tcl crashes in windows

Each Tcl interpreter object (i.e., the context that knows how to run a Tcl procedure) can only be safely used from the OS thread that creates it. This is because Tcl doesn’t use a global interpreter lock like Python, and instead makes extensive use of thread-specific data to reduce the number of locks required internally. … Read more

Threads and tkinter

All Tcl commands need to originate from the same thread. Due to tkinter‘s dependence on Tcl, it’s generally necessary to make all tkinter gui statements originate from the same thread. The problem occurs because mainWindow is instantiated in the tkinterGui thread, but — because mainWindow is an attribute of tkinterGui — is not destroyed until … Read more

List of All Tkinter Events

A general list for Bindings and Events can be found on effbot.org or in the docs provided by New Mexico Tech whereas the name of several keys are listed here in addition to the original documentation. Here’s a summary of the most common events with some keypress names explained: Event Description <Button-1> Button 1 is … Read more