导入tkinter与tk和tkinter导入之间的区别

时间:2013-04-12 15:04:37

标签: python import tkinter

我知道这是一个愚蠢的问题,但我刚开始学习python而且我对python没有很好的了解。我的问题是

之间有什么区别
from Tkinter import *

import Tkinter as tk

?为什么我不能写

import Tkinter

有人可以花几分钟来启发我吗?

3 个答案:

答案 0 :(得分:15)

from Tkinter import *将Tkinter中的每个公开对象导入当前名称空间。 import Tkinter在您的命名空间中导入“命名空间”Tkinter import Tkinter as tk执行相同的操作,但在本地“重命名”为“tk”以节省您的输入

假设我们有一个模块foo,包含A,B和C类。

然后import foo可以访问foo.A,foo.B和foo.C。

执行import foo as x时,您也可以访问这些文件,但名称为x.A,x.B和x.C. from foo import *将直接在当前命名空间中导入A,B和C,因此您可以使用A,B和C访问它们。

还有from foo import A, C将导入A和C,而不是B导入当前的命名空间。

您也可以执行from foo import B as Bar,这将使B在名称Bar下可用(在您当前的命名空间中)。

通常情况下:当您只想要一个模块的一个对象时,可以from module import objectfrom module import object as whatiwantittocall

当您需要某些模块功能时,可以import moduleimport module as shortname来保存您的输入。

不鼓励{p> from module import *,因为您可能会意外地遮蔽(“覆盖”)名称,并且可能会丢失哪些对象属于哪个模块。

答案 1 :(得分:3)

你当然可以使用

import Tkinter

但是,如果您这样做,则必须为使用Tkinter.的每个Tk类名称添加前缀。

这很不方便。

另一方面,以下内容:

import Tkinter as tk

只需要您输入tk.而不是Tkinter.来回避问题。

至于:

from Tkinter import *
由于Should wildcard import be avoided?

中讨论的原因,这通常是一个坏主意

答案 2 :(得分:0)

写作:

from tkinter import * 

导致导入tkinter模块中存在的所有内容

写作:

import tkinter

导致导入tkinter模块,但如果这样做,则为了能够调用任何方法,您将必须使用:

tkinter.function_name()