我正在尝试使用Python3.2和标准库Tkinter来测试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
发布于 2012-07-23 21:55:13
问题的根源在于,在Python2.x中,Tkinter模块被命名为Tkinter
(大写"T"),而在Python3.x中被命名为tkinter
(小写"t")。
要使您的代码在Python2和Python3中都能工作,您可以这样做:
try:
# for Python2
from Tkinter import *
except ImportError:
# for Python3
from tkinter import *
然而,对于通配符导入,PEP8这样说:
应避免导入通配符( from
*)
尽管有无数的教程忽略了PEP8,但与PEP8兼容的导入方式应该是这样的:
import tkinter as tk
当以这种方式导入时,您需要在所有tkinter命令前加上tk.
前缀(例如:root = tk.Tk()
等)。这将使您的代码更容易理解,但代价是需要更多的输入。考虑到tkinter和ttk经常一起使用,并以相同的名称导入类,这是一件好事。正如Zen of python所说:“显式比隐式好”。
注意:as tk
部分是可选的,但可以让您少输入一点:tk.Button(...)
vs tkinter.Button(...)
发布于 2011-09-21 11:06:28
在3.x中,该模块称为tkinter
,而不是Tkinter
。
发布于 2011-09-21 11:09:29
对于3.x,使用Tkinter
作为tkinter
(小写)重写代码如下:
from tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
https://stackoverflow.com/questions/7498658
复制相似问题