Python Tkinter:为什么使用Tkinter.W而不是str;w";

Python Tkinter:为什么使用Tkinter.W而不是str;w";,python,tkinter,python-2.x,Python,Tkinter,Python 2.x,我正在学习使用Tkinter,在教程中它告诉我从Tkinter导入W,但W只是一个str(“W”)。 我的问题是为什么使用Tkinter.W而不是“W”。这是因为Tkinter有时会使var等于依赖于系统的其他值吗?这样做主要是为了方便用户 考虑PIL/Pizz中的图像类。它有一种方法可以在调整图像大小的过程中创建图像的缩略图。该方法有两个参数,元组中的新大小和重采样方法。这可以是反别名、双线性、立方等。它们在内部用整数值表示,如0、1等。如果您不知道哪个值表示哪个重采样方法,查看它会很麻烦,还

我正在学习使用Tkinter,在教程中它告诉我从Tkinter导入W,但W只是一个str(“W”)。

我的问题是为什么使用Tkinter.W而不是“W”。这是因为Tkinter有时会使var等于依赖于系统的其他值吗?

这样做主要是为了方便用户

考虑PIL/Pizz中的
图像
类。它有一种方法可以在调整图像大小的过程中创建图像的缩略图。该方法有两个参数,元组中的新大小和重采样方法。这可以是反别名、双线性、立方等。它们在内部用整数值表示,如0、1等。如果您不知道哪个值表示哪个重采样方法,查看它会很麻烦,还可能导致更多错误。但是从常量
图像访问它。双线性
和boom,你就完成了

在您的情况下,仅为字符串
“W”
导入
W
似乎不必要地污染了命名空间,并且键入
tkinter.W
“W”
长。也许是这样。但是,请记住,程序中的常量是在一个地方定义的,因此,如果必须更改它们,则很容易更改。您永远不会知道,模块可能在内部使用常量
W
,即使您看不到其中的任何意义


这也导致了你指出的原因。常数可能具有不同的值,具体取决于系统或版本。通过使用内部一致的常量,而不是静态的硬编码值,当您在不同的系统或版本上重用该代码时,您的生活会更轻松。

我总是使用字符串值。我认为使用常量绝对没有好处。他们改变的机会几乎为零。自Tkinter创建以来,这些常量保持不变

tkinter非常重视向后兼容性,因此即使它们被更改,字符串值也毫无疑问会继续工作一两年


我的建议是永远不要使用常量

可能,但也是因为它更有意义。我经常使用字符串,尤其是在
import tkinter as tk
从tkinter import*
导入大约80个常量之后,这可能会妨碍调试。如果我从tkinter导入Tk,Text,…,那么我可能会添加,例如,提升到显式列表中,部分作为我将使用的文档。