我需要知道从tkinter import *和tkinter import' module'之间的差异。

时间:2015-07-21 06:13:44

标签: python python-3.x tkinter sublimetext3 sublimerepl

我开始学习python,我正在做一些教程和视频教程。我使用sublime text 3来编写代码和sublimeREPL的控制台来运行文件和代码。 几天前,我不得不在网上搜索如何让sublimeREPL在IDLE 3运行时运行,我就做到了。

现在的问题是,在我正在做的课程中,他们正在教我如何使用tkinter,但在视频中的人员代码:

from tkinter import *
colorchooser.askcolor()

并且它有效,但是当我编码时,它不起作用。错误说:

  

回溯(最近一次呼叫最后一次):文件"",第1行,in   NameError:name' colorchooser'未定义

我需要编码:

from tkinter import colorchooser
colorchooser.askcolor()

它有效。

我只需要知道为什么我必须这样做?为什么它不能以第一种方式为我工作?

我不是英语演讲者我尽我所能。

3 个答案:

答案 0 :(得分:1)

使用

from tkinter import colorchooser

您正在从package(这是一个结构化模块)colorchooser导入(sub - )模块 tkinter(及其变量和函数)

  

包是一种使用“点模块名称”构建Python模块命名空间的方法。

所以模块tkinter的结构如下:

tkinter/
    colorchooser/
        askcolor()
        ...

使用from tkinter import * tkinter来自_(事实上所有公共对象都不是以from sound.effects import *开头),而不是其子模块,这就是为什么这两种方法不一样的原因:

  

...语句from ... import *不会将包sound.effects中的所有子模块导入当前命名空间

importing all methods and variables

然而,你可以(尽管很多人会说from tkinter.colorchooser import * 是不好的做法)

 $('.datetimepicker').datetimepicker({
        format: 'mmd/dd/yyyy',
 })

答案 1 :(得分:0)

来自tkinter import *的

不起作用,因为您需要整个tkinter目录。 这就是为什么你必须具体的colorchooser模块,以使你的程序工作。

答案 2 :(得分:0)

我不确定你在哪里看到它,但是colorchooser一直是tkinter内的一个模块,当你这样做时它不会被导入 -

from tkinter import *

您必须使用 -

专门导入它
from tkinter import colorchooser

正如你已经观察到的那样。