2011-09-21 14 views
18

標準ライブラリTkinterでPython 3.2を使用してGUIコードをテストしようとしていますが、ライブラリをインポートできません。PythonでTkinterをインポートするときにImportErrorが発生する

この私のテストコードさ:

from Tkinter import * 

root = Tk() 
w = Label(root, text="Hello, world!") 
w.pack() 
root.mainloop() 

シェルで次のエラー:

Traceback (most recent call last): 
File "<pyshell#9>", line 1, in <module> 
from Tkinter import * 
ImportError: No module named Tkinter 

答えて

27

問題の根本は、TkinterのモジュールがTkinter(大文字 "T")はPython 2で指定されていることです.x、およびtkinter(小文字の「t」)のいずれかです。あなたはこのような何か行うことができますPythonの2と3の両方でコードを動作させるために

:しかし

try: 
    # for Python2 
    from Tkinter import * 
except ImportError: 
    # for Python3 
    from tkinter import * 

を、PEP8は、ワイルドカードの輸入について言うために、このあります。にも関わらず

Wildcard imports (from <module> import *) should be avoided

をPEP8を無視する数え切れないほどのチュートリアルでは、PEP8準拠のインポート方法は次のようになります:

import tkinter as tk 

このようにインポートする場合は、すべてのtkinterコマンドの接頭辞をtk.(例:root = tk.Tk()など)にする必要があります。これにより、コードをより分かりやすくすることができます。 tkinterとttkの両方がよく一緒に使用され、同じ名前のクラスをインポートすると、これは良いことです。 Zen of pythonは「明示的は暗黙的に優れている」と述べています。

注:as tk部分はオプションですが、あなたは少しタイピングを行うことができます:tk.Button(...)tkinter.Button(...)

15

モジュールが3.xで、ないTkintertkinterと呼ばれていますtkinter(小文字)としてTkinterと次のように

8
は3.xのコードを書き換える

from tkinter import * 

root = Tk() 

w = Label(root, text="Hello, world!") 
w.pack() 

root.mainloop() 
関連する問題