python - 在 Tkinter 按钮内更新 Python 字典中的值

标签 python dictionary tkinter

我正在尝试使用 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/

相关文章:

python - csv 中第一位数字的数字频率,不导入

python - 如何在不点击鼠标的情况下执行python tkinter按钮

python - 从 TkInter 条目小部件获取字符串

python - 使用 pygame.key.get_pressed() 时创建边框

Python:MemoryError、OverflowError、即时系统卡住

Python编程-修改字典中的列表项

python - 在 PySpark 中将 Spark DataFrame 从行转换为列,并将其附加到另一个 DataFrame

c++ - 如何在 map 中找到最小值?

python - 使用字典分隔后缀

python-2.7 - ttk Treeview 小部件不会激活水平滚动