ast wrote:
> Hello
>
> Since in python3 ttk is a submodule of tkinter, I was expecting this
> to work:
>
> from tkinter import *
>
> root = Tk()
> nb = ttk.Notebook(root)
>
> but it doesnt, ttk is not known.
>
> I have to explicitely import ttk with
>
> from tkinter import ttk
>
> why ?
If there's no tkinter.__all__
from tkinter import *
is basically
import tkinter
globals().update(
(name, value) for name, value in
vars(tkinter).items() if not name.startswith("_")
)
del tkinter
so if "from tkinter import *" doesn't inject ttk in your namespace this
means that there is no variable tkinter.ttk. This is because there is no
from . import ttk
in tkinter/__init__.py, and automagically importing all candidate submodules
is inefficient (and unsafe).
However, once you import tkinter.ttk the name is added
>>> import tkinter.ttk
>>> from tkinter import *
>>> ttk
<module 'tkinter.ttk' from '/usr/lib/python3.4/tkinter/ttk.py'>
so what you get with the *-import depends on what has been imported before,
perhaps by other modules.
Personally I'd avoid the *-import altogether...
--
https://mail.python.org/mailman/listinfo/python-list