python – tkinter在将2.x代码移植到3.x时出现问题,’tkinter’模块属性不存在
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – tkinter在将2.x代码移植到3.x时出现问题,’tkinter’模块属性不存在,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1969字,纯文字阅读大概需要3分钟。
内容图文
![python – tkinter在将2.x代码移植到3.x时出现问题,’tkinter’模块属性不存在](/upload/InfoBanner/zyjiaocheng/826/eaa38931fd3a4616855f5193b0e050dd.jpg)
更新:见下文
我一直在移植这个任务的代码: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
引用定义方法的行(上面的第一行).
解决方法:
看来Tkinter.tkinter在Python 3中被改为tkinter._tkinter.将Python 2中的these docs与Python 3中的these进行比较.另外,dooneevent不再在tkinter._tkinter中,但仍然是Tk(又名根)对象的成员.
所以将代码更改为
def keys_pressed(d_o_e=lambda arg: _root_window.dooneevent(arg),
d_w=tkinter._tkinter.DONT_WAIT):
这利用了在链接代码_root_window是全局的事实,因此虽然在定义类时_root_window不可用,但是在运行lambda时它将可用.
内容总结
以上是互联网集市为您收集整理的python – tkinter在将2.x代码移植到3.x时出现问题,’tkinter’模块属性不存在全部内容,希望文章能够帮你解决python – tkinter在将2.x代码移植到3.x时出现问题,’tkinter’模块属性不存在所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。