Tkinter:消息小部件中锚点选项的正确值是什么



我一直在学习 tkinterTkinter 中的消息小部件在 Python 课程和教程。

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

NameError: name 'NE' is not defined

这是我的代码。

import tkinter
root = tkinter.Tk()
message = ("Whatever you do will be insignificant,"
"but it is very important that you do it.n"
"(Mahatma Gandhi)")
msg = tkinter.Message(root,text = message, anchor = NE, aspect = 1000,
                      foreground='red', background='yellow', 
                      highlightcolor='green', highlightthickness=0,
                      borderwidth=500)
#msg.config(bg='lightgreen', font=('times', 24, 'italic'))
msg.pack()
tkinter.mainloop()

编辑:我也尝试在单引号中输入'NE',但没有用。

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

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

我个人认为使用设置为"n"或"ne"的常量NNE很奇怪。常量除了在这种情况下有时引起混淆之外没有任何目的。

以下是规范文档:

指定小部件

中的信息(例如文本或位图)在小部件中的显示方式。必须是值 n、ne、e、se、s、sw、w、nw 或 center 之一。例如,nw 表示显示信息,使其左上角位于小部件的左上角。

我认为您需要使用模块名称对其进行限定。

msg = tkinter.Message(root,text = message, anchor = tkinter.NE, ...

您也可以使用字符串文字,但我不确定这是记录的行为。

msg = tkinter.Message(root,text = message, anchor = "ne", ...

如果其他人在使用锚选项时遇到问题,请尝试将其放入包函数中:

msg.pack(anchor = 'w')

而不是在消息或配置中,奇怪的是这对我不起作用:

msg.Message(anchor = 'w', ...)
msg.config(anchor = 'w', ...)

只是澄清如果对问题中网站链接上的示例代码进行更改,代码为什么有效。

在阅读了 Kevin 和 Bryan Oakley 的回答后,我意识到网站之所以有 NE 与 tkinter.NE 并且它有效,如果你在示例代码中添加锚选项,是他们导入 tkinter 模块的方式。

from Tkinter import * #Python 2
from tkinter import * #Python 3

我一周前才知道这一点,Mark Roddy 在这里的回应("导入模块"或"从模块导入")不鼓励使用 import *,因为很难判断代码来自哪个模块。这就是我的困惑。

最新更新