在Python中导入Tkinter时发生ImportError [重复]

5n0oy7gb  于 2023-05-02  发布在  Python
关注(0)|答案(3)|浏览(152)

此问题已在此处有答案

Difference between tkinter and Tkinter(7个回答)
6天前关闭。
我正在尝试使用Python 3测试GUI代码。2与标准库Tkinter,但我不能导入库。
这是我的测试代码:

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
ccrfmcuu

ccrfmcuu1#

问题的根源是Tkinter模块在python 2中被命名为Tkinter(大写“T”)。x和tkinter(小写“t”)。x.
为了让你的代码在Python 2和Python 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经常一起使用,并且导入同名的类,这是一件好事。如Zen of python所述:“显性比隐性好”。
注意:as tk部分是可选的,但可以让你少输入一些:tk.Button(...)tkinter.Button(...)

o3imoua4

o3imoua42#

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

tzcvj98z

tzcvj98z3#

Tkinter重写为tkinter(小写),得到3。x:

from tkinter import *

root = Tk()

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

root.mainloop()

相关问题