[Python-Dev] Tkinter problems with Tcl/Tk 8.5 (original) (raw)
"Martin v. Löwis" martin at v.loewis.de
Tue Jan 1 22🔞51 CET 2008
- Previous message: [Python-Dev] Fate of Windows build directories
- Next message: [Python-Dev] Syntax suggestion for imports
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
It seems very peculiar how the text widget's bbox is returning a Python-like list and therefore breaking the Tcl callback. I haven't thus far been able to determine which python method is causing that, or if it's something related to the hooks you have added. The same problem doesn't occur with 8.4.
I have now studied this in detail, and fixed it in Python's trunk; see the tracker item for details.
In short:
- IDLE redirects all widget sub-commands, either calling an overridden definition, or the original Tk command.
- in the redirection of "bbox", Tk 8.4 would return a string, whereas 8.5 now returns a list.
- _tkinter converts the string to a Python string, and the list to a Python tuple
- IDLE returns the Python value to _tkinter, which in turn converts it to a string. This leaves the 8.4 string unchanged, but converts the 8.5 tuple into something like "(10, 10, 20, 20)".
- Tk interprets it as a list of numbers, choking as "(10," is not a meaningful number.
The fix is to return an ObjResult to Tcl from a Python callback. I'm skeptical about back-porting this to 2.5, as it may affect behavior. So for 2.5, we probably have to recommend not using Tk 8.5.
There are a number of additional incompatible changes. For example, text::index returns textindex objects now, where it used to return strings. I have fixed that in Tkinter, which converts the textindex back to a string. I'm sure there are other places where Tk 8.5 will break existing Tkinter applications.
Regards, Martin
- Previous message: [Python-Dev] Fate of Windows build directories
- Next message: [Python-Dev] Syntax suggestion for imports
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]