导入Python中的Tkinter时的ImportError
我正在尝试用Python 3.2和标准库Tkinter来测试图形用户界面(GUI)代码,但我无法导入这个库。
这是我的测试代码:
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
3 个回答
10
把代码改成这样,使用 Tkinter
的小写形式 tkinter
,适用于3.x版本:
from tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
20
在3.x版本中,这个模块叫做tkinter
,而不是Tkinter
。
37
问题的根源在于,Tkinter模块在Python 2.x中叫做Tkinter
(大写“T”),而在Python 3.x中叫做tkinter
(小写“t”)。
为了让你的代码在Python 2和3中都能运行,你可以这样做:
try:
# for Python2
from Tkinter import *
except ImportError:
# for Python3
from tkinter import *
不过,PEP8对使用通配符导入有这样的建议:
应该避免使用通配符导入(从
<module>
导入所有内容)
尽管有很多教程忽略了PEP8,但符合PEP8的导入方式应该是这样的:
import tkinter as tk
用这种方式导入时,你需要在所有tkinter命令前加上tk.
(比如:root = tk.Tk()
等等)。这样做会让你的代码更容易理解,虽然多打了一点字。因为tkinter和ttk常常一起使用,并且它们有相同名称的类,所以这样做是个好主意。正如Python之禅所说:“显式优于隐式”。
注意:as tk
这一部分是可选的,但可以让你少打一些字:tk.Button(...)
比tkinter.Button(...)
要简洁一些。