我一直在通过http://www.python-course.eu/tkinter_message_widget.php
学习tkinter当我使用网站上显示的选项添加锚选项时,我一直收到错误。我被告知NE不存在,但NE在上面的链接中作为锚点选项给出:
<iterable>
这是我的代码。
NameError: name 'NE' is not defined
编辑:我也尝试在单引号中键入“NE”,但它不起作用。
答案 0 :(得分:4)
值是字符串文字“n”,“ne”,“e”,“se”,“s”,“sw”,“w”,“nw”或“center”。案例很重要。它们代表指南针的方向(北,南,东和西)
在您的情况下,您正在使用包含这些值的tkinter常量。由于导入tkinter的方式,必须在这些常量前面加上模块名称。例如,tkinter.NE
。
我个人认为使用设置为“n”或“ne”的常量N
或NE
是很奇怪的。除了有时在诸如此类的情况下引起混淆之外,该常量没有用处。
指定窗口小部件中信息(例如文本或位图)的显示方式。必须是值n,ne,e,se,s,sw,w,nw或center之一。例如,nw表示显示信息,使其左上角位于小部件的左上角。
答案 1 :(得分:2)
我认为您需要使用模块名称对其进行限定。
msg = tkinter.Message(root,text = message, anchor = tkinter.NE, ...
您也可以使用字符串文字,但我不确定是否记录了行为。
msg = tkinter.Message(root,text = message, anchor = "ne", ...
答案 2 :(得分:0)
如果对问题中的网站链接上的示例代码进行了更改,请说明代码的工作原理。
在阅读了凯文和布莱恩奥克利的答案之后,我意识到网站之所以有NE而不是tkinter.NE并且它有效,如果你在示例代码中添加了锚选项,就是他们导入tkinter模块的方式。
from Tkinter import * #Python 2
from tkinter import * #Python 3
我刚刚在一周前学到了这一点,Mark Roddy在他的回复('import module' or 'from module import')中不鼓励使用import *
,因为很难说出代码来自哪个模块。这就是我的困惑。
答案 3 :(得分:0)
如果其他人在使用anchor选项时遇到麻烦,请尝试将其放入pack函数中:
msg.pack(anchor = 'w')
而不是内部消息或配置对我不起作用:
msg.Message(anchor = 'w', ...)
msg.config(anchor = 'w', ...)