New submission from Serhiy Storchaka <storchaka+cpyt...@gmail.com>:

The tkapp.split() method has weird behavior. It splits a string recursively, so 
the type of items and the depth of nesting depends on spaces in string values. 
For example:

>>> import tkinter
>>> root = tkinter.Tcl()
>>> root.tk.split('Hi')
'Hi'
>>> root.tk.split('Hello "Good bye"')
('Hello', ('Good', 'bye'))

It may work as you meant in some cases (if items at the same level either all 
have spaces or all do not have spaces), but return unexpected  result for 
untested cases. It is more robust to use the tkapp.splitlist() method, which 
split exactly one level and always returns a tuple of strings. It can be used 
recursively if you need nested lists.

>>> root.tk.splitlist('Hi')
('Hi',)
>>> root.tk.splitlist('Hello "Good bye"')
('Hello', 'Good bye')
>>> [root.tk.splitlist(x) for x in root.tk.splitlist('Hello "Good bye"')]
[('Hello',), ('Good', 'bye')]

----------
components: Tkinter
messages: 353948
nosy: serhiy.storchaka
priority: normal
severity: normal
status: open
title: Tkinter: deprecate the split() method
versions: Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue38371>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to