Python 从Tkinter导入*导入错误:没有名为';特金特';
我在Windows中使用PyCharm,通过Anaconda以及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() 以下是我在
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