首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Python中导入Tkinter时的ImportError

在Python中导入Tkinter时的ImportError
EN

Stack Overflow用户
提问于 2011-09-21 11:04:29
回答 3查看 102.1K关注 0票数 19

我正在尝试使用Python3.2和标准库Tkinter来测试GUI代码,但我无法导入该库。

这是我的测试代码:

代码语言:javascript
运行
AI代码解释
复制
from Tkinter import *

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

shell会报告以下错误:

代码语言:javascript
运行
AI代码解释
复制
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
from Tkinter import *
ImportError: No module named Tkinter
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-23 21:55:13

问题的根源在于,在Python2.x中,Tkinter模块被命名为Tkinter (大写"T"),而在Python3.x中被命名为tkinter (小写"t")。

要使您的代码在Python2和Python3中都能工作,您可以这样做:

代码语言:javascript
运行
AI代码解释
复制
try:
    # for Python2
    from Tkinter import *
except ImportError:
    # for Python3
    from tkinter import *

然而,对于通配符导入,PEP8这样说:

应避免导入通配符( from

*)

尽管有无数的教程忽略了PEP8,但与PEP8兼容的导入方式应该是这样的:

代码语言:javascript
运行
AI代码解释
复制
import tkinter as tk

当以这种方式导入时,您需要在所有tkinter命令前加上tk.前缀(例如:root = tk.Tk()等)。这将使您的代码更容易理解,但代价是需要更多的输入。考虑到tkinter和ttk经常一起使用,并以相同的名称导入类,这是一件好事。正如Zen of python所说:“显式比隐式好”。

注意:as tk部分是可选的,但可以让您少输入一点:tk.Button(...) vs tkinter.Button(...)

票数 35
EN

Stack Overflow用户

发布于 2011-09-21 11:06:28

在3.x中,该模块称为tkinter,而不是Tkinter

票数 19
EN

Stack Overflow用户

发布于 2011-09-21 11:09:29

对于3.x,使用Tkinter作为tkinter (小写)重写代码如下:

代码语言:javascript
运行
AI代码解释
复制
from tkinter import *

root = Tk()

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

root.mainloop()
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7498658

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文