Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从Tkinter导入*导入错误:没有名为';特金特';_Python_Tkinter - Fatal编程技术网

Python 从Tkinter导入*导入错误:没有名为';特金特';

Python 从Tkinter导入*导入错误:没有名为';特金特';,python,tkinter,Python,Tkinter,我在Windows中使用PyCharm,通过Anaconda以及tkinter模块下载了Python 3.5.5和所有其他库。在此之前,我用它解决了任何问题。上次我安装实时拖缆库时。我认为那会引起问题。中小企业: from Tkinter import * , from tkinter import * , root = tk(), root = Tk(), root = tk.Tk(), root = tk.Tk(), root = Tk.tk() root = TK.TK() 以下是我在

我在Windows中使用PyCharm,通过Anaconda以及
tkinter
模块下载了Python 3.5.5和所有其他库。在此之前,我用它解决了任何问题。上次我安装实时拖缆库时。我认为那会引起问题。中小企业:

from Tkinter import * , from tkinter import * , 
root = tk(), root = Tk(), root = tk.Tk(), root = tk.Tk(), root = Tk.tk()
root = TK.TK()
以下是我在PyCharm中运行的代码:

from tkinter import *
import tkinter

top = Tk()

def helloCallBack():
   print( "Hello Python", "Hello World")

B = tkinter.Button(top, text ="Hello", command = helloCallBack)

B.pack()
top.mainloop()
这些都不管用

好的。首先:

你不应该做的事: 在生产环境中,如果您不确定模块是以这种方式调用还是以另一种方式调用(这可能取决于安装的Python版本),则不应该像这样将所有导入放在一起,因为如果其中一个导入失败,将引发导入错误,从而导致运行时崩溃。请执行以下操作:

try:
    import Tkinter

except ImportError:  # Python 3.x present
    import tkinter
然而,在您的例子中,您已经知道您有Python3,所以这不是一个问题。只需使用正确的一个(继续阅读下一节)

建议您做的事情: 如果您使用的是Python 2.x: 模块名为
Tkinter
。您可以从Tkinter导入*执行
,并且将导入
Tk

如果您使用的是Python 3.x: 模块名为
tkinter
。注意小写。您必须执行
导入tkinter
;并使用
tkinter.Tk

根本原因 您可能希望从已发布的答案中读取此片段,因此:

然而,PEP8对通配符导入有这样的说法:

应避免通配符导入(从导入*)

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

import tkinter as tk
以这种方式导入时,需要为所有tkinter命令添加前缀 用tk。(例如:root=tk.tk(),等等)。这将使您的代码更容易理解 以多输入一点点为代价来理解。鉴于两者 tkinter和ttk经常一起使用,并使用 同名,这是件好事。正如python的Zen所说: “显性比隐性好”

注意:as-tk部分是可选的,但您可以少做一点 键入:tk.Button(…)与tkinter.Button(…)

完整答案:

为什么解释器不导入Tk 我不确定为什么您的解释器不为这种用法导入Tk。你必须提供更多的细节才能解决问题的那一部分

编辑:tkinter导入*
中的
行将
模块文件夹中的
初始化.py
文件的名称空间包含到您的文件中。因此,您应该检查:

  • PyCharm从何处导入tkinter模块。您可以转到导入中的
    tkinter
    单词,右键单击获取上下文菜单,然后转到:
    转到-->声明
    (或只需点击
    Ctrl+B
    )。它应该带您到
    \uuu init\uuuu.py
    文件,其中
    Tk
    应该是其中定义的类

  • 运行文件时的Python路径是否正在获取Tk模块所在的文件夹

  • 如果这些都不正常,那么可能是因为你的安装被破坏了。如果您告诉我们只有来自tkinter import*
    不起作用,或者如果
    import tkinter;tkinter.Tk
    也没有定义。你应该进行一次干净的安装

    为了帮助我们了解问题的根源,请尝试从终端或Python控制台运行相同的代码,看看会发生什么。

    确定。首先:

    你不应该做的事: 在生产环境中,如果您不确定模块是以这种方式调用还是以另一种方式调用(这可能取决于安装的Python版本),则不应该像这样将所有导入放在一起,因为如果其中一个导入失败,将引发导入错误,从而导致运行时崩溃。请执行以下操作:

    try:
        import Tkinter
    
    except ImportError:  # Python 3.x present
        import tkinter
    
    然而,在您的例子中,您已经知道您有Python3,所以这不是一个问题。只需使用正确的一个(继续阅读下一节)

    建议您做的事情: 如果您使用的是Python 2.x: 模块名为
    Tkinter
    。您可以从Tkinter导入*
    执行
    ,并且将导入
    Tk

    如果您使用的是Python 3.x: 模块名为
    tkinter
    。注意小写。您必须执行
    导入tkinter
    ;并使用
    tkinter.Tk

    根本原因 您可能希望从已发布的答案中读取此片段,因此:

    然而,PEP8对通配符导入有这样的说法:

    应避免通配符导入(从导入*)

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

    import tkinter as tk
    
    以这种方式导入时,需要为所有tkinter命令添加前缀 用tk。(例如:root=tk.tk(),等等)。这将使您的代码更容易理解 以多输入一点点为代价来理解。鉴于两者 tkinter和ttk经常一起使用,并使用 同名,这是件好事。正如python的Zen所说: “显性比隐性好”

    注意:as-tk部分是可选的,但您可以少做一点 键入:tk.Button(…)与tkinter.Button(…)

    完整答案:

    为什么解释器不导入Tk 我不确定为什么您的解释器不为这种用法导入Tk。你必须提供更多的细节才能解决问题的那一部分

    编辑:tkinter导入*
    中的
    行将
    模块文件夹中的
    初始化.py
    文件的名称空间包含到您的文件中。因此,您应该检查:

  • PyCharm从何处导入tkinter模块。您可以转到导入中的
    tkinter
    单词,右键单击获取上下文菜单,然后转到:
    go-to-->Declaration
    (或只需点击
    Ctrl+B