It seems most of confusion comes from mixing up python object and tk
widgets, and ignored that the tkinter is really a python-tk-interface.
Thank you for pointing it out.
Terry Reedy at 2018/6/18 PM 05:19 wrote:
To answer the question of the title, which is a bit different from the
question in the text, yes. type(None)() always returns the singleton
None object. (And one can write a singleton class in Python also.)
bool() always returns one of False or True. int() and str() may return
either a new or old object. For such immutables, it does not matter as
long at the object has the correct value. As others said, this is all
handled in a __new__ method. But none of this has much to do with
tkinter instances.
On 6/18/2018 5:09 AM, Terry Reedy wrote:
On 6/18/2018 12:48 AM, Jach Fong wrote:
After looking into the \tkiniter\font.py source file, triggered by Jim's
hint on my previous subject "Why an object changes its "address" between
adjacent calls?", I get more confused.
Below was quoted from the font.py:
------------------------
def nametofont(name):
"""Given the name of a tk named font, returns a Font
representation.
"""
return Font(name=name, exists=True)
class Font:
"""Represents a named font.
tkinter abbreviates tk interface. A Python tkinter Font instance
represents a tk named font structure. It has a hidden pointer to the
tk structure. The same is true of all instances of tkinter widgets
classes. Each has a hidden pointer to a tk widget
Constructor options are:
...
exists -- does a named font by this name already exist?
Does a *tk* named font exist?
Creates a new named font if False, points to the existing
font if True.
Again, 'font' here means a tk structure, not a python instance. Each
call to Font returns a new python instance. But for Fonts, it may or
may not point to a new tk structure.
...
"""
def __init__(self, root=None, font=None, name=None, exists=False,
**options):
...
One can mostly ignore the parallel existence of python instances and
tk structures. But they can get out of sync during shutdown. If t is
an instance of Text, t.destroy() causes tkinter to tell tk to destroy
the tk widget, leaving t useless. Similarly, if 'del t' deletes the
last reference to the Python instance, it may disappear, leaving the
tk widget possibly unaccessible.
---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
--
https://mail.python.org/mailman/listinfo/python-list