【问题标题】:i need to know whats the diference between from tkinter import * and from tkinter import 'module'我需要知道 from tkinter import * 和 from tkinter import 'module' 之间的区别是什么
【发布时间】:2015-07-21 06:13:44
【问题描述】:

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

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

from tkinter import *
colorchooser.askcolor()

它可以工作,但是当我编写代码时,它不起作用。错误说:

Traceback(最近一次调用最后一次):文件“”,第 1 行,in NameError: name 'colorchooser' 未定义

我需要编码:

from tkinter import colorchooser
colorchooser.askcolor()

它有效。

我只需要知道为什么我必须这样做?为什么第一种方式对我不起作用?

我不是说英语的人我尽力了。

【问题讨论】:

  • 似乎视频中的 python 版本与您的不同(可能较旧)。这对你有用吗:from tkinter import *tkinter.colorchooser.askcolor()?看看docs.python.org/3.5/library/tkinter.html
  • 你在看哪个视频?
  • 视频上的版本是 3.3.3 并且我使用的是 3.4.3,我尝试了 if form tkinter import * tkinter.colorchooser.askcolor() 并且它不起作用--> NameError:名称“tkinter”未定义
  • 我也意识到,如果我在 IDLE 3 上运行第一个,它就可以工作。我理解你所有的答案,但这让我很困惑 xD。

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


【解决方案1】:

from tkinter import colorchooser

您正在从package(结构化模块)tkinter 导入(子)模块 colorchooser(以及它的变量和函数)。

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

所以模块tkinter的结构如下:

tkinter/
    colorchooser/
        askcolor()
        ...

使用from tkinter import *,你是来自tkinterimporting all methods and variables(实际上所有不以_开头的公共对象),但不是它的子模块,这就是为什么这两种方法不是一样的:

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

(source)

但是你可以(尽管很多人会说from ... import * 是不好的做法)

from tkinter.colorchooser import *

【讨论】:

    【解决方案2】:

    from tkinter import * 不起作用,因为您需要整个 tkinter 目录。 这就是为什么您必须为您的程序指定颜色选择器模块。

    【讨论】:

      【解决方案3】:

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

      from tkinter import *
      

      您必须使用 - 专门导入它

      from tkinter import colorchooser
      

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

      【讨论】:

        猜你喜欢
        • 2013-04-05
        • 1970-01-01
        • 2021-11-14
        • 1970-01-01
        • 2019-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多