Python tkinter:消息小部件中锚选项的正确值是什么?

时间:2017-01-20 17:43:26

标签: python python-2.7 python-3.x user-interface tkinter

我一直在通过http://www.python-course.eu/tkinter_message_widget.php

学习tkinter

当我使用网站上显示的选项添加锚选项时,我一直收到错误。我被告知NE不存在,但NE在上面的链接中作为锚点选项给出:

<iterable>

这是我的代码。

NameError: name 'NE' is not defined
编辑:我也尝试在单引号中键入“NE”,但它不起作用。

4 个答案:

答案 0 :(得分:4)

值是字符串文字“n”,“ne”,“e”,“se”,“s”,“sw”,“w”,“nw”或“center”。案例很重要。它们代表指南针的方向(北,南,东和西)

在您的情况下,您正在使用包含这些值的tkinter常量。由于导入tkinter的方式,必须在这些常量前面加上模块名称。例如,tkinter.NE

我个人认为使用设置为“n”或“ne”的常量NNE是很奇怪的。除了有时在诸如此类的情况下引起混淆之外,该常量没有用处。

以下是canonical documentation

  

指定窗口小部件中信息(例如文本或位图)的显示方式。必须是值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', ...)