在 Python 中导入 Tkinter 时出现 ImportError [重复]
Posted
技术标签:
【中文标题】在 Python 中导入 Tkinter 时出现 ImportError [重复]【英文标题】:ImportError when importing Tkinter in Python [duplicate] 【发布时间】:2011-11-21 20:32:44 【问题描述】:我正在尝试使用带有标准库 Tkinter 的 Python 3.2 测试 GUI 代码,但我无法导入该库。
这是我的测试代码:
from Tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
shell报这个错误:
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
from Tkinter import *
ImportError: No module named Tkinter
【问题讨论】:
【参考方案1】:问题的根源在于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 对通配符导入有这样的说法:
应避免通配符导入( from
import * )
尽管有无数教程忽略了 PEP8,但符合 PEP8 的导入方式是这样的:
import tkinter as tk
以这种方式导入时,需要在所有 tkinter 命令前加上tk.
前缀(例如:root = tk.Tk()
等)。这将使您的代码更容易理解,但会花费更多的输入。鉴于 tkinter 和 ttk 经常一起使用并导入具有相同名称的类,这是一件好事。正如Zen of python 所说:“显式优于隐式”。
注意:as tk
部分是可选的,但可以让您少输入一些内容:tk.Button(...)
vs tkinter.Button(...)
【讨论】:
【参考方案2】:该模块在 3.x 中称为 tkinter
,而不是 Tkinter
。
【讨论】:
【参考方案3】:将代码改写如下,将Tkinter
改写为tkinter
(小写)3.x:
from tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
【讨论】:
以上是关于在 Python 中导入 Tkinter 时出现 ImportError [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 python 2.7 中导入 zipfile 模块时出现语法错误
在 Python 3 中导入模块时出现 AttributeError
在python 2.7中导入熊猫时出现“ValueError:未知语言环境:UTF-8” [重复]