Is it 'fine' to instantiate a widget without parent parameter?

jfong at ms4.hinet.net jfong at ms4.hinet.net
Mon Sep 9 20:30:01 EDT 2019


Terry Reedy於 2019年9月9日星期一 UTC+8下午3時06分27秒寫道:
> On 9/8/2019 8:40 PM, jfong at ms4.hinet.net wrote:
> 
> > Thank you. After a quick trace to find out the reason, I found that Tkinter prevents Tk() be called more than once from widget constructors, so only one Tk object exists:-)
> 
> There will only be one default Tk object, but there can be multiple Tk 
> objects.
> 
>  >>> import tkinter as tk
>  >>> r1 = tk.Tk()
>  >>> r2 = tk.Tk()
>  >>> r1.tk
> <_tkinter.tkapp object at 0x000001F90F2F1D30>
>  >>> r2.tk
> <_tkinter.tkapp object at 0x000001F90F328930>
> 
> 
> -- 
> Terry Jan Reedy

>>> import tkinter as tk
>>> f0 = tk.Frame()
>>> root0 = tk.Tk()
>>> f0.master
<tkinter.Tk object at 0x015AB6F0>
>>> root0
<tkinter.Tk object at 0x015ABE50>
>>>

>>> import tkinter as tk
>>> root0 = tk.Tk()
>>> f0 = tk.Frame()
>>> f0.master
<tkinter.Tk object at 0x0269B710>
>>> root0
<tkinter.Tk object at 0x0269B710>
>>>

Why?

PS. Maybe there is no why, just it is what it is:-)

--Jach



More information about the Python-list mailing list