PyCharm中用Tkinter创建窗口报AttributeError:模块'tkinter'无'Tk'属性
解决PyCharm中tkinter的AttributeError问题
我来帮你搞定这个问题!你遇到的AttributeError: module 'tkinter' has no attribute 'Tk'在PyCharm里出现,但终端运行python3 -m tkinter正常,大概率是PyCharm使用的Python解释器和终端不一致,或者项目里有干扰文件导致的。下面是具体的排查和解决步骤:
1. 核对PyCharm的Python解释器
首先得确认PyCharm用的是不是终端里那个能正常运行tkinter的Python版本:
- 先在终端里执行这两个命令,记下路径和版本:
从你的报错信息看,终端用的是which python3 python3 --version/usr/bin/python3.6 - 打开PyCharm,依次点击
File > Settings > Project: [你的项目名] > Python Interpreter - 查看当前选中的解释器路径和版本,如果和终端的不一样:
- 点击右上角的齿轮图标,选择
Add - 找到终端里的Python路径(比如
/usr/bin/python3.6)添加进去,然后切换到这个解释器 - 重启PyCharm后再运行代码试试
- 点击右上角的齿轮图标,选择
2. 检查项目中的同名文件
这是很容易踩的坑:如果你的项目目录里存在名为tkinter.py或者Tkinter.py的文件,Python会优先导入你自己写的这个文件,而不是系统的tkinter模块,自然找不到Tk属性。
- 打开你的项目文件夹,看看有没有这类同名文件
- 如果有,立刻重命名(比如改成
my_tk_demo.py),同时删除项目里的__pycache__文件夹,然后重新运行代码
3. 验证解释器的tkinter可用性
如果上面两步都没问题,那可以在PyCharm的Python Console里测试一下:
import tkinter # 查看导入的tkinter文件路径 print(tkinter.__file__) # 查看模块里的所有属性,看有没有'Tk' print(dir(tkinter))
- 如果输出的路径不是系统tkinter的路径(比如不是
/usr/lib/python3.6/tkinter/__init__.py),那还是回到步骤2检查同名文件 - 如果
dir(tkinter)的输出里没有'Tk',说明这个解释器没装tkinter,你需要给它安装:
对于Debian/Ubuntu系统,执行:sudo apt-get install python3.6-tk
小提示:优化你的代码
另外,你的代码可以稍微调整一下,避免把pack()的返回值赋值给label(pack()返回None,如果之后要操作label的话会报错):
import tkinter window = tkinter.Tk() window.title("GUI") label = tkinter.Label(window, text="Welcome to Tkinter!") label.pack() # 单独调用pack() window.mainloop()
内容的提问来源于stack exchange,提问作者dikshantdk
相关产品推荐
相关产品推荐

