python源码编译 带tkinter_python – tkinter在将2.x代码移植到3.x时出现问题,’tkinter’模块属性不存在...

更新:见下文

我一直在移植这个任务的代码:http://www.stanford.edu/class/cs221/progAssignments/PA1/search.html(整个源代码从那里作为zip提供)

从Python 2.x到3.x.注意,移植不是赋值,只是我试图使代码保持最新并避免安装另一个版本的Python …

通常的2.x – >之后3.x语法修复(打印,异常提升等),并意识到模块Tkinter现在被称为3.x(小写)中的tkinter,我遇到了陌生人的问题,这个片段和其他几个像它:

def keys_pressed(d_o_e=tkinter.tkinter.dooneevent,d_w=tkinter.tkinter.DONT_WAIT)

错误的类型如下:

AttributeError: 'module' object has no attribute 'tkinter'

我的IDE中的代码完成和变量跟踪确实似乎表明tkinter模块没有属性或子类tkinter,在其下可以引用dooneevent或DONT_WAIT.但是,在互联网上还有一些使用类似结构的人参考

_tkinter.dooneevent(_tkinter.DONT_WAIT)

将主循环向前移动,但即使像那样引用它仍然会产生相同的错误.

任何想法都非常感激.

更新:通过lambda表示法引用_root_window似乎有效,因为它在大多数情况下不再抱怨执行前的时间.然而,对于我未经训练的眼睛来说,这基本上是“神奇的”,因此我不知道这个后续错误在说什么或如何解决它.该方法现在看起来像这样,我在第一行中进行了更改:

def move_to(object, x, y=None, d_o_e=lambda arg: _root_window(arg), d_w=tkinter._tkinter.DONT_WAIT):

if y is None:

try: x, y = x

except: raise 'incomprehensible coordinates'

horiz = True

newCoords = []

current_x, current_y = _canvas.coords(object)[0:2] # first point

for coord in _canvas.coords(object):

if horiz:

inc = x - current_x

else:

inc = y - current_y

horiz = not horiz

newCoords.append(coord + inc)

_canvas.coords(object, *newCoords)

d_o_e(d_w)

我得到的错误是:

TypeError: 'Tk' object is not callable

引用定义方法的行(上面的第一行).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值