Python stringvar如何使用textvariable?

Python stringvar如何使用textvariable?,python,python-3.x,tkinter,var,Python,Python 3.x,Tkinter,Var,我正在编写一个国际象棋程序,但我无法将棋子输出,因为我将文本从用文本变量定义更改为文本变量,现在我无法使用字符串输出棋子。 我在for循环中定义了按钮,它在正方形中不输出任何内容。代码是 def牵引板(自): x=0 y=0 对于范围内的列(self.n): self.changecolors() x=x+1 y=0 对于范围内的行(self.n): y=y+1 颜色=自身颜色[自身颜色索引] 位置=(x,9-y) 按钮=(tk.按钮(self.boardframe,padx=10,textva

我正在编写一个国际象棋程序,但我无法将棋子输出,因为我将文本从用文本变量定义更改为文本变量,现在我无法使用字符串输出棋子。 我在for循环中定义了按钮,它在正方形中不输出任何内容。代码是

def牵引板(自):
x=0
y=0
对于范围内的列(self.n):
self.changecolors()
x=x+1
y=0
对于范围内的行(self.n):
y=y+1
颜色=自身颜色[自身颜色索引]
位置=(x,9-y)
按钮=(tk.按钮(self.boardframe,padx=10,textvariable=lambda position=pos:self.placepieces(位置),borderwidth=0,bg=color,relief=“solid”,font=self.piecefont,command=lambda position=pos:self.movepiece(位置)))
buttons.grid(列=(x-1),行=(y-1),sticky=“W”+“E”+“N”+“S”)
self.changecolors()
@类方法
def定位件(cls,位置):
黑色=黑色()
白色=白色()
正方形位置=位置
icon=tk.Stringvar(“”)
如果squareposition为白色.position.values():
对于白色位置的钥匙:
value=white.position.get(键)
如果值==平方位置:
如果键为endswith(“典当”):
icon.set(白色.pawntype[键])
elif键==“国王”:
icon.set(白色.碎片.get(“国王”))
elif键==“皇后”:
icon.set(白色。碎片。获取(“女王”))
elif key.endswith(“主教”):
icon.set(白色.parties.get(“BISHOP”))
elif key.endswith(“骑士”):
icon.set(白色.碎片.get(“骑士”))
其他:
icon.set(white.parties.get(“ROOK”))
其他:
通过
elif squareposition为黑色。position.values():
对于处于黑色位置的钥匙:
value=black.position.get(键)
如果值==平方位置:
如果键为endswith(“典当”):
icon.set(黑色.pawntype.get(键))
elif键==“国王”:
icon.set(黑色.碎片.获取(“国王”))
elif键==“皇后”:
icon.set(黑色.碎片.get(“女王”))
elif key.endswith(“主教”):
icon.set(黑色.PIECES.get(“BISHOP”))
elif key.endswith(“骑士”):
icon.set(黑色.碎片.get(“骑士”))
其他:
icon.set(黑色.parties.get(“ROOK”))
打破
其他:
通过
其他:
图标集(“”)
返回图标
stringvar如何使用textvariable

对于按钮,您可以将文本配置为以两种方式之一显示:使用硬编码字符串(例如:
text='click me'
)或使用
textvariable
属性

textvariable
属性必须设置为一个特殊tkinter变量对象的实例
StringVar
IntVar
DoubleVar
BooleanVar
(例如:
var=tk.StringVar();按钮(…,textvariable=var)
)。当配置这些变量之一的实例时,按钮上的文本将显示变量的任何值

在内部,当您指定
textvariable
时,tkinter将采用该对象的字符串表示形式,并在嵌入式解释器中创建一个tcl变量。因此,虽然它可能会接受标准变量、命令甚至lambda,但最终会创建一个具有该名称的内部tcl变量,并将该内部变量与底层tcl小部件相关联。如果不使用其中一个特殊变量,则很难获取或设置该变量的值

例如,考虑这组命令:

var = tk.StringVar(value="hello")
tk.Button(root, textvariable=var)

运行该代码时,按钮上显示的文本将是
hello
。如果您随时更改变量(例如:
var.set(“再见”)
),按钮将自动更改以显示新值。

Tkinter中的所有
…变量=
选项绝对需要Tkinter变量类型之一:
StringVar
IntVar
,等等。它们不能是lambda或任何其他Python对象。lambda用于存储正方形的坐标。如果我不能用lambda做这件事,我怎么做?