从Tkinter导入* ImportError:没有名为“ Tkinter”的模块

时间:2018-08-31 11:13:12

标签: python tkinter

我正在Windows中使用PyCharm,并且已经通过Anaconda以及[HttpPost("[action]")] public async Task<Search> GetAllTweetsByNamePost(dynamic searchQuery) { return allData; } 模块下载了Python 3.5.5和所有其他库。在此之前,我已经解决了所有问题。上次安装实时Streamer 库。我认为造成问题。精打细算:

testlink() {
     console.log('yeah yeah');
     this.http.post<any>(this.baseUrl + 'api/OperationData/GetAllTweetsByNamePost/', 'ggg').subscribe(
       res => {
         console.log('err')
       },
       err => console.log(err)
     );
 }

这是我在PyCharm中运行的代码:

tkinter

这些都不在这里

screenshot

3 个答案:

答案 0 :(得分:3)

好的。首先:

您不应该做的事情:

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

try:
    import Tkinter

except ImportError:  # Python 3.x present
    import tkinter

但是,在您的情况下,您已经知道您拥有Python 3,所以这不是问题。只需使用正确的一个即可(请继续阅读下一节)。

建议您做什么:

如果您使用的是Python 2.x:

该模块名为Tkinter。您可以执行from Tkinter import *Tk将被导入。

如果您使用的是Python 3.x:

该模块名为tkinter。注意小写。您必须执行import tkinter;并使用tkinter.Tk

理性

您可能想从已经张贴在SO上的以下答案中读取此片段:

  

但是,PEP8对通配符导入有以下说法:

     

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

     

尽管有无数教程忽略了PEP8,但仍符合PEP8   导入方式如下:

import tkinter as tk
     

以这种方式导入时,需要为所有tkinter命令添加前缀   与tk。 (例如:root = tk.Tk()等)。这将使您的代码更容易   了解更多的打字。鉴于两者   tkinter和ttk通常一起使用,并且使用   同名,这是一件好事。正如python的Zen所述:   “明确胜于隐含”。

     

注意:as tk部分是可选的,但您可以做得少一些   键入:tk.Button(...)vs tkinter.Button(...)

完整答案:https://stackoverflow.com/a/11621141/4396006

为什么您的口译员不导入Tk

我不确定您的口译员为什么不为此用途导入Tk。您必须提供更多详细信息,才能解决问题的这一部分。

编辑:第from tkinter import *行将__init__.py模块文件夹中tkinter文件的名称空间包含到您的文件中。因此,您应该检查:

  1. PyCharm从哪里导入tkinter模块。您可以转到导入中的tkinter字词,右键单击获取上下文菜单,然后转到:Go to --> Declaration(或只需单击Ctrl+B)。它应该带您到该__init__.py文件,其中Tk应该是其中定义的类。

  2. 运行文件时您的Python路径是否正在获取该文件夹,您在其中找到了Tk模块。

如果以上任何一项都不可行,则可能是因为您的安装已损坏。如果您告诉我们只有from tkinter import *不起作用或import tkinter; tkinter.Tk也没有定义,对您会有所帮助。您应该进行全新安装。

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

答案 1 :(得分:2)

让我们弄清一些基础知识,因为您似乎认为有些事情永远都不会奏效。

无论如何导入,您总是需要Tk()单独使用大写字母T或使用适当的前缀。

您尝试过的方法永远无法解决。

root = tk(), Tk.tk(), root = TK.TK()

所有小写字母tk()或所有大写字母TK()在tkinter中都无法使用。

如果from tkinter import *不起作用而top = tkinter.Tk()不起作用,则很可能是您没有安装tkinter。或至少由于某种原因已将其删除。

Windows发行版应该已经带有tkinter。我会尝试进行全新安装,然后看看会发生什么。无论如何,您都应该更新到3.6,因为3.5的一些错误需要修复。

关于您的进口问题。

from tkinter import *此行应与top = Tk()一起使用。这样可以告诉我尚未安装tkinter。

import tkinter这条多余的线应该像top = tkinter.Tk()一样工作,但是如果前一条不工作,则可能也不会。

在对PyCharm进行了一些测试之后,我可以说,如果PyCharm无法加载tkinter,则它将首先在导入时出错,而不是在Tk()部分。

Traceback (most recent call last):
  File "C:/Users/mcdomi3/PycharmProjects/MintyFlakes/test.py", line 1, in <module>
    from Tkinter import *
ModuleNotFoundError: No module named 'tkinter'

Process finished with exit code 1

仅此而已,我认为您的安装已损坏。

结论。

您需要重新安装python或尝试pip install tkinter,因为它从您的库中丢失或以某种方式损坏。

答案 2 :(得分:0)

删除前3行。您已经尝试了所有可能的名称。他们大多数都不工作。 Tkintertkinter存在,而tk()不存在。