【问题标题】:ImportError when importing Tkinter in Python [duplicate]在 Python 中导入 Tkinter 时出现 ImportError [重复]
【发布时间】: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

【问题讨论】:

    标签: python 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()
        

        【讨论】:

          猜你喜欢
          • 2011-11-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-01
          • 2017-05-13
          • 1970-01-01
          相关资源
          最近更新 更多