You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3运行2to3转换的Python2代码报tkinter属性错误求助

解决AttributeError: module 'tkinter' has no attribute 'tkinter'问题

这个错误是Python2转Python3时tkinter模块结构变化,加上2to3工具没处理好深层属性引用导致的,直接改一行代码就能搞定:

具体修复步骤

  • 打开报错的文件 graphicsUtils.py,定位到第294行的函数定义:
    def keys_pressed(d_o_e=tkinter.tkinter.dooneevent, ...):
    
  • 将参数默认值里的 tkinter.tkinter.dooneevent 改成 tkinter.dooneevent,修改后变成:
    def keys_pressed(d_o_e=tkinter.dooneevent, ...):
    
  • 保存文件后重新运行你的Pacman程序。

为什么会出现这个问题

在Python2中,Tkinter模块内部会嵌套引用底层的tkinter子模块来访问一些底层方法(比如dooneevent),但到了Python3,tkinter模块已经把这些方法直接暴露在顶层了,不需要再通过tkinter.tkinter来访问。2to3工具能处理大部分基础的导入转换(比如把import Tkinter改成import tkinter),但这种深层的属性嵌套引用没被识别出来,所以需要手动修正。

如果之后还遇到类似的tkinter相关错误,记得检查代码里有没有其他tkinter.tkinter.xxx的写法,全部改成tkinter.xxx就好。

内容的提问来源于stack exchange,提问作者Lam Moh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:21:45