我需要知道从tkinter导入*和tkinter导入'模块'之间的区别是什么
我是学习Python的开始,我正在做一些教程和视频教程。我使用崇高的文本3来打印代码,并使用sublimeREPL的控制台来运行文件和代码。 几天前,我不得不在网上搜索如何使sublimeREPL运行为空闲3运行,我做到了。我需要知道从tkinter导入*和tkinter导入'模块'之间的区别是什么
现在的问题是,在教训我在做什么,现在他们教会了我如何使用Tkinter的,但在视频的家伙代码:
from tkinter import *
colorchooser.askcolor()
和它的作品,但是当我的代码, ,它不起作用。错误说:
Traceback (most recent call last): File "", line 1, in NameError: name 'colorchooser' is not defined
我需要代码:
from tkinter import colorchooser
colorchooser.askcolor()
和它的作品。
我只需要知道为什么我必须这样做?为什么它不适用于我的第一种方式?
我不是英语演讲者我尽力了。
随着
from tkinter import colorchooser
从
package
要导入的(子)模块colorchooser
(加上它的变量和函数)(这是一个结构化的模块)tkinter
。
Packages are a way of structuring Python’s module namespace by using “dotted module names”.
所以模块tkinter
结构如下:
tkinter/
colorchooser/
askcolor()
...
随着from tkinter import *
你是importing all methods and variables从tkinter
(其实所有的公共对象无法启动与_
),而不是它的子模块,这为什么这两种方法不一样:
... the statement
from sound.effects import *
does not import all submodules from the package sound.effects into the current namespace
(source)
你可以,但是(尽管很多人会说from ... import *
是不好的做法)
from tkinter.colorchooser import *
来自tkinter import *不起作用,因为您需要整个tkinter目录。 这就是为什么你必须指定colorchooser模块为你的程序工作。
我不知道你在哪里看到了这一点,但colorchooser
一直是一个模块内tkinter
和它当你没有得到进口 -
from tkinter import *
你必须明确使用导入 -
from tkinter import colorchooser
正如您已经观察到的那样。
似乎视频中的python版本与您的版本不同(可能更老)。这是否适合你:'从tkinter import *''tkinter.colorchooser.askcolor()'? 查看https://docs.python.org/3.5/library/tkinter.html。 – 0xc0de
你看哪个视频? –
视频上的版本它是3.3.3和我usin 3.4.3,我试图如果表单tkinter导入* tkinter.colorchooser.askcolor(),它不起作用 - > NameError:名称'tkinter'未定义 –