2015-07-21 82 views
0

我是學習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() 

和它的作品。

我只需要知道爲什麼我必須這樣做?爲什麼它不適用於我的第一種方式?

我不是英語演講者我盡力了。

+0

似乎視頻中的python版本與您的版本不同(可能更老)。這是否適合你:'從tkinter import *''tkinter.colorchooser.askcolor()'? 查看https://docs.python.org/3.5/library/tkinter.html。 – 0xc0de

+0

你看哪個視頻? –

+0

視頻上的版本它是3.3.3和我usin 3.4.3,我試圖如果表單tkinter導入* tkinter.colorchooser.askcolor(),它不起作用 - > NameError:名稱'tkinter'未定義 –

回答

1

隨着

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 variablestkinter(其實所有的公共對象無法啓動與_),而不是它的子模塊,這爲什麼這兩種方法不一樣:

... 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 * 
0

來自tkinter import *不起作用,因爲您需要整個tkinter目錄。 這就是爲什麼你必須指定colorchooser模塊爲你的程序工作。

0

我不知道你在哪裏看到了這一點,但colorchooser一直是一個模塊內tkinter和它當你沒有得到進口 -

from tkinter import * 

你必須明確使用導入 -

from tkinter import colorchooser 

正如您已經觀察到的那樣。

相關問題