【问题标题】:Difference between tkinter and Tkintertkinter 和 Tkinter 之间的区别
【发布时间】:2013-07-24 11:52:27
【问题描述】:

当我回答 Tkinter 问题时,我通常会尝试自己运行代码,但有时我会收到此错误:

Traceback (most recent call last):
  File "C:\Python27\pygame2.py", line 1, in <module>
    from tkinter import *
ImportError: No module named tkinter

当我查看问题时,我看到他们使用小写 t 导入 tkinter

from tkinter import *

我总是用大写 T 导入Tkinter

from Tkinter import *

这对我总是有用的。使用tkinterTkinter有什么区别?

【问题讨论】:

标签: python import tkinter


【解决方案1】:

这很简单。

对于python2是:

from Tkinter import *

对于python3是:

from tkinter import *

您可以通过以下方式一劳永逸地忘记这种困惑:

try:
    from Tkinter import *
except ImportError:
    from tkinter import *

【讨论】:

  • 在这两种情况下,我建议避免全局导入。 IMO 更好的方法是 import Tkinter as tkimport tkinter as tk
  • 这里是列出所有tkinter 差异的链接:python-future.org/compatible_idioms.html#tkinter
  • 现在是 2021 年,我可以从 python2.7 cli 导入 tkinterTkinter。这个答案使它看起来不应该工作。
  • @Hendy 这有点奇怪,你确定你是在 2.7 上吗?
  • @CoolCloud 所以,在深入挖掘之后,我认为这实际上是关于future,而不是tkinter!检查这个:$ dpkg -S /usr/lib/python2.7/dist-packages/tkinter/__init__.pypython-future: /usr/lib/python2.7/dist-packages/tkinter/__init__.py。所以,我认为这就是为什么这对两种变体都有效。
【解决方案2】:

Tkinter 是 Python 2.x 中 Tkinter 库的名称。然而,在 Python 3.x 中,名称已更改为 tkinter。为了避免遇到这个问题,我通常这样做:

from sys import version_info
if version_info.major == 2:
    # We are using Python 2.x
    import Tkinter as tk
elif version_info.major == 3:
    # We are using Python 3.x
    import tkinter as tk

【讨论】:

  • 在这两种情况下,我建议避免全局导入。 IMO 更好的方法是 import Tkinter as tkimport tkinter as tk
【解决方案3】:

很简单,在 Python 3 中它是“tkinter”,而在 Python 2 中它是“Tkinter” 例子:

#python 2
from Tkinter import *

#python 3
from tkinter import *

要让程序同时在 Python 2 和 Python 3 上运行,您可以使用:

try:
    import tkinter as tk
except:
    import Tkinter as tk

然后使用 Tkinter 模块作为 tk

【讨论】:

    【解决方案4】:

    Python 2 一直使用from Tkinter import * 但是python 3使用from tkinter import * 我觉得这很愚蠢,不幸的是它让很多人感到困惑。

    【讨论】:

      【解决方案5】:

      Tkinter 和 tkinter 小部件、方法和选项名称的大写完全不同。在某些情况下,名称本身是不同的。 Tkinter 的某些功能在 tkinter 中不存在,反之亦然。但是,如前所述,主要区别在于 Tkinter 是 Python 2x 中的一个模块,而 tkinter 是 Python 3x 中的一个模块。

      【讨论】:

        【解决方案6】:

        唯一的区别是模块名称取决于 Python 的主要版本。在 Python 3 中它是 tkinter,在 Python 2 中它曾经是 Tkinter。请记住,与 Tkinter 相关的其他模块也已重命名。这是full list

        来自docs

        Tkinter 在 Python 3 中已重命名为 tkinter。

        为了向后兼容,最好像这样导入 tkinter 和您正在使用的相关模块:

        try:
            import tkinter as tk
            from tkinter import messagebox
            from tkinter import filedialog
        except ImportError:
            import Tkinter as tk
            import tkMessageBox as messagebox
            import tkFileDialog as filedialog
        

        【讨论】:

          【解决方案7】:
          try:
             import tkinter
             print"importing tkinter from python 3.x"
          except:
             import Tkinter
             print"importing Tkinter from python 2.x"
          
          finally:
             print"Difference !"
          

          【讨论】:

          • 您应该添加关于您的代码如何帮助解决问题的说明。
          • 没有描述会被标记为低质量,可以删除
          • 更不用说这个导入的结果不做进一步检查基本没用。
          • 这与我所做的很接近。而是将导入别名为相同的名称。否则,一点点:将 Tkinter 导入为 tkinter。除了:您可以将其限制为仅导入错误。
          【解决方案8】:

          根据the official documentation,“Tkinter 在 Python 3 中已重命名为 tkinter”。在 Python2 中,您使用 import Tkinter 或更常见的 from Tkinter import *,其中“*”表示“全部”。在 Python3 中,您使用 import tkinterfrom tkinter import *

          【讨论】:

            【解决方案9】:

            Python2:

            from Tkinter import *
            

            Python3:

            from tkinter import *
            

            【讨论】:

              【解决方案10】:

              在python 2中是:

              from Tkinter import *
              

              在python 3中是:

              from tkinter import *
              

              如果您想让您的代码在两个版本中都可以工作,请执行以下操作:

              try:
                  from Tkinter import *
              except:
                  from tkinter import *
              

              【讨论】:

              • 你的答案很好(+1),但为什么你还需要在你的答案下发表评论呢?你最好用你想写的东西来编辑答案。
              【解决方案11】:

              Tkinter 与 Python 2. 和 Python 3.**

              的其他区别

              我有一个脚本,其中有不同的 Python 2 导入。* Tkinter 如此浏览,但我看到答案都是零散的。这里有一个小总结,其中包含使用两个 Python 版本的安全脚本。

              try:
                  import Tkinter as tk
                  import tkMessageBox as tkm
                  import ScrolledText as tkst
                  from tkFileDialog import askopenfilename
              except ImportError:
                  import tkinter as tk
                  import tkinter.messagebox as tkm
                  import tkinter.scrolledtext as tkst
                  from tkinter.filedialog import askopenfilename
              

              ModuleNotFoundError 错误列表(运行 Python 3 时。)

              ModuleNotFoundError: No module named 'Tkinter'
              ModuleNotFoundError: No module named 'tkMessageBox'
              ModuleNotFoundError: No module named 'ScrolledText'
              ModuleNotFoundError: No module named 'tkFileDialog'
              

              【讨论】:

                【解决方案12】:

                对于python 2:

                from Tkinter import *
                

                对于python 3:

                from tkinter import * 
                

                否则,请尝试:

                try:
                    from Tkinter import *
                except ImportError:
                    from tkinter import *
                

                【讨论】:

                • 无耻重复另一个答案。
                猜你喜欢
                • 2013-04-05
                • 1970-01-01
                • 2021-02-17
                • 2013-03-10
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多