Python 3.x 在tkinter标签中显示对象属性
我想一个标签,更新时,我按下一个按钮。标签是一个格式化字符串,用于打印对象的某些属性 这就是我试过的。它显示正确,但不会更新Python 3.x 在tkinter标签中显示对象属性,python-3.x,tkinter,label,Python 3.x,Tkinter,Label,我想一个标签,更新时,我按下一个按钮。标签是一个格式化字符串,用于打印对象的某些属性 这就是我试过的。它显示正确,但不会更新 from class_mnoply import * from tkinter import * Player1=Player("Hat") message=str(''' ____________________ {0} Bank account: ${1} Dice1: {2} Dice2: {3} ____________________
from class_mnoply import *
from tkinter import *
Player1=Player("Hat")
message=str('''
____________________
{0}
Bank account: ${1}
Dice1: {2}
Dice2: {3}
____________________
'''.format(Player1.name, Player1.bank, Player1.dice1, Player1.dice2))
mainWin = Tk()
topFrame=Frame(mainWin)
topFrame.pack(side=TOP)
button1 Button(mainWin,text="ThrowDice",fg="red",command=Player1.rollDice())
button1.pack(side=BOTTOM)
plLabel = Label(mainWin, textvariable=message)
plLabel.pack()
mainWin.mainloop()
以下语句中有1处输入错误和1处潜在错误:
button1 Button(mainWin,text="ThrowDice",fg="red",command=Player1.rollDice())
你能猜出是什么错别字吗?如果没有,您只是缺少=
符号
另一方面,您将Player1.rollDice()
的返回值分配给command,但这不是您想要的。您只需将Player1.rollDice
方法设置为按下button1
时调用的命令。以下是正确的语法(请注意()
)末尾的空白处):
然后,以下语句中定义了消息:
plLabel = Label(mainWin, textvariable=message)
不需要使用StringVar
对象,但如果需要,必须首先声明它:
message = StringVar()
最后,您可以将其用作标签的textvariable
假设您不知道什么是lambda
,这是您尝试执行的操作示例(不使用StringVar
变量):
看,也许我需要更清楚一些。我让它正确显示,但我想要的是,当我点击按钮时,我的“消息”的fomat选项将被更新。当我调用函数rollDice时,它会将新值设置为Player.dice1和Player.dice2。我得到了显示的初始值(1),但当调用rollDice时,它们仍然显示一个。这里:button1按钮(mainWin,text=“ThrowDice”,fg=“red”,command=Player1.rollDice())
,删除()
,因为您不想将Player1.rollDice()
的返回值分配给命令,但您只想将Player.rollDice
method address与命令关联,而不是像我前面所说的那样,将其实际返回值关联。@user274132如果您需要的话,请查看上面的注释和编辑后的答案
message = StringVar()
from tkinter import *
def set_label_text():
plLabel.config(text='Hello World!')
mainWin = Tk()
topFrame=Frame(mainWin)
topFrame.pack(side=TOP)
button1 =Button(mainWin,text="ThrowDice",fg="red",
command=set_label_text) # note the absence of ()
button1.pack(side=BOTTOM)
plLabel = Label(mainWin)
plLabel.pack()
mainWin.mainloop()