我正在尝试使用 Python 为游戏编写一些代码,但似乎无法将按钮单击命令中的变量放入字典变量中以供以后使用。我想做的是在单击按钮时运行 jingle_add() ,让它运行一些计算,更新显示并返回使用的树值并更改回适当的字典键。如果在 jingle_add() 中直接调用字典值,我可以让代码正常工作,但我试图压缩我的代码并将其用作将保存在同一字典中的多种不同类型的值的模板,使用不同的按钮调用它们。然而,对于下面的代码版本,我根本无法让它运行,并且没有给出明显的错误,只有 lambda 行上的一个标志。是否有我在 lambda 调用中遗漏的内容,或者我在返回中遗漏的内容?
data = {'fans': 0, 'jingle': 0, 'jingle_cost': 15}
jingle_button = Button(win, text = "Make a jingle - +0.1 fans/sec", command = lambda: data['fans'], data['jingle_cost'], data['jingle'] = jingle_add(data['fans'], data['jingle_cost'], data['jingle']))
def jingle_add(fans, cost, building):
if fans >= cost:
fans -= cost
cost = round(cost * (1.07**building), 1)
building += 1
return fans, cost, building
最佳答案
在当前形式下,由于 lambda
表达式中的赋值,您的代码无法编译。另一种方法是在函数中定义它的功能并使用该函数作为回调:
def add_to_data():
data['fans'], data['jingle_cost'], data['jingle'] = jingle_add(data['fans'], data['jingle_cost'], data['jingle'])
jingle_button = Button(win,
text = "Make a jingle - +0.1 fans/sec", command = add_to_data)
(请注意,add_to_data
在用作 command
参数时不带括号。)
关于python - 在 Tkinter 按钮内更新 Python 字典中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37936427/