On Sun, Jun 17, 2018 at 7:39 PM, sa...@caprilion.com.tw <sa...@caprilion.com.tw> wrote: > Jim Lee at 2018/6/17 PM 04:10 wrote: >> >> >> >> On 06/17/2018 12:08 AM, Jach Fong wrote: >>> >>> C:\Python34\Doc>py >>> Python 3.4.4 (v3.4.4:737efcadf5a6, Dec 20 2015, 19:28:18) [MSC v.1600 32 >>> bit (Intel)] on win32 >>> Type "help", "copyright", "credits" or "license" for more information. >>> >>> import tkinter as tk >>> >>> root = tk.Tk() >>> >>> tk.Label(root, text='label one', font='TkDefaultFont').pack() >>> >>> from tkinter import font >>> >>> font.nametofont('TkDefaultFont') >>> <tkinter.font.Font object at 0x021E9490> >>> >>> font.nametofont('TkDefaultFont') >>> <tkinter.font.Font object at 0x021E9390> >>> >>> >>> >>> The "address" of the Font object 'TkDefaultFont' changes, why? >>> >>> Best Regards, >>> Jach Fong >>> >>> >> >> def nametofont(name): >> """Given the name of a tk named font, returns a Font representation. >> """ >> return Font(name=name, exists=True) >> >> Every time you call nametofont(), you're creating a new instance of the >> Font class. > > > hmm... It means every time I set a widget's font to "TkDefaultFont", a > new object was created. Why python do things this way? Can't it use > this same object again and again? >
That would imply keeping the object around until it's needed again. Sometimes that's worth doing; other times it isn't, or isn't worth the hassle. As soon as you stop using the previous one, Python is free to dispose of it. ChrisA -- https://mail.python.org/mailman/listinfo/python-list