我在Windows中使用PyCharm,并通过Anaconda和tkinter模块下载了Python3.5.5和所有其他库。在此之前,我用它来解决任何问题。上一次我安装了LiveStreamer库。我觉得这会引起问题。尝试过资本和小规模:
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()这些在这里都没有用

发布于 2018-08-31 11:58:37
让我们澄清一些基本的事情,因为它似乎你认为有几件事应该工作,永远不会。
不管您是如何导入的,您总是需要使用大写T本身或适当的前缀来执行Tk()。
你尝试过的东西永远不会成功。
root = tk(), Tk.tk(), root = TK.TK()所有小写tk()或所有大写TK()都不会在tkinter中工作。
如果from tkinter import *不工作,而执行top = tkinter.Tk()不工作,则很可能没有安装tkinter。或者至少因为某种原因它已经被移除了。
Windows发行版应该已经有tkinter了。我会尝试做一个干净的安装,看看会发生什么。无论如何,您应该更新到3.6,因为3.5有一些需要修复的bug。
至于你们的进口问题。
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,因为它从库中丢失或以某种方式损坏。
发布于 2018-08-31 11:18:09
好的。首先:
你不该做的事:
在生产中,如果您不确定模块是以某种方式调用(这可能取决于已安装的Python版本),则不应该这样将所有导入放在一起,因为如果其中一个失败,将引发导入错误,从而使您的运行时崩溃。做以下工作:
try:
import Tkinter
except ImportError: # Python 3.x present
import tkinter但是,在您的例子中,您已经知道您有Python 3,所以这不是一个问题。只需使用正确的(继续读到下一节)。
你应该做的是:
如果您使用的是Python2.x:
模块名为Tkinter。您可以做from Tkinter import *和Tk将被导入。
如果您使用的是Python3.x:
模块名为tkinter。注意小写。您必须做import tkinter,并使用tkinter.Tk
基本原理
您可能想从这个已经张贴在下面的答案中读到这个片段:
然而,对于通配符导入,PEP8有这样的看法: 应避免通配符导入(从import *) 尽管不计其数的教程忽略了PEP8,但PEP8 8兼容的导入方式如下所示: 进口tkinter作为tk 在以这种方式导入时,您需要在所有tkinter命令前面加上tk。(例如: root = tk.Tk()等)。这将使您的代码更容易理解,而不需要更多的输入。考虑到tkinter和ttk经常一起使用并以相同的名称导入类,这是一件好事。正如python的禅宗所说:“显式比隐式好”。 注意: as tk部分是可选的,但允许您少输入一些:tk.Button(.)vs tkinter.Button(.)
完整答案:https://stackoverflow.com/a/11621141/4396006
为什么您的解释器不导入Tk
我不确定为什么您的解释器不为该用途导入Tk。你必须提供更多的细节,才能解决问题的那一部分。
编辑:行from tkinter import *将__init__.py文件的命名空间包含在tkinter模块文件夹中的文件中。因此,您应该检查:
tkinter单词,右键单击获得上下文菜单,然后转到:Go to --> Declaration (或只点击Ctrl+B)。它应该带您到那个__init__.py文件,其中Tk应该是在其中定义的一个类。如果这其中的任何一个是不好的,那可能是因为你的安装是坏的。如果您告诉我们,如果只有from tkinter import *不工作,或者import tkinter; tkinter.Tk也没有定义,我会很有帮助的。你应该去一个干净的安装。
为了帮助我们了解问题的根源,尝试从终端或Python的控制台运行相同的代码,看看会发生什么。
发布于 2018-08-31 11:27:19
移除前3行。你试过了所有可能的名字。大多数都不起作用。Tkinter或tkinter都存在,而tk()不存在。
https://stackoverflow.com/questions/52114259
复制相似问题