小编典典

在Python中导入Tkinter时,ImportError

python

我正在尝试使用带有标准库Tkinter的Python 3.2测试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

阅读 190

收藏
2021-01-20

共1个答案

小编典典

问题的根源是Tkinter模块Tkinter在python 2.x中被命名为(大写“ T”),tkinter在python 3.x中被命名为(小写“
t”)。

为了使您的代码在Python 2和3中都能正常工作,您可以执行以下操作:

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

但是,PEP8对于通配符导入有这样的说法:

应避免通配符导入(来自 import *)

尽管有无数的教程忽略了PEP8,但兼容PEP8的导入方式如下所示:

import tkinter as tk

以这种方式导入时,您需要为所有tkinter命令加上前缀tk.(例如:root = tk.Tk()等)。这将使您的代码更易于理解,但要付出一点点输入。鉴于tkinter和ttk经常一起使用,并且导入名称相同的类,这是一件好事。正如python禅宗所言:“显式优于隐式”。

注意:该as tk部分是可选的,但可以让您少打字:tk.Button(...)vstkinter.Button(...)

2021-01-20