首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Tkinter按钮中更新Python上的dict中的值

在Tkinter按钮中更新Python上的dict中的值
EN

Stack Overflow用户
提问于 2016-06-21 05:43:39
回答 2查看 636关注 0票数 1

我试图使用Python为游戏编写一些代码,并且似乎无法将我的变量从按钮单击命令中提取到字典变量中供以后使用。我要做的是按一下按钮运行jingle_add(),让它运行一些计算,更新显示并返回所使用的树值,然后更改回相应的字典键。如果在jingle_add()中直接调用字典值,我可以让代码工作,但我试图压缩我的代码,并将其用作多个不同类型值的模板,这些值将保存在同一个字典中,并使用不同的按钮调用它们。但是,在下面的代码版本中,我根本无法让它运行,并且没有给出明显的错误,只是在lambda行上出现了一个标志。我在兰巴的电话里缺少了什么吗?还是我在回程中错过了什么?

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-21 06:33:14

在其当前形式中,由于lambda表达式中的赋值,您的代码无法编译。另一种方法是定义函数中的功能,并将该函数用作回调:

代码语言:javascript
复制
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参数时不使用括号。)

票数 1
EN

Stack Overflow用户

发布于 2016-06-21 06:15:17

请说明你从哪里得到可变的‘成本’。然后尝试打印一些东西,检查它是否在第一个循环中运行:

代码语言:javascript
复制
if fans >= cost:

您的代码是正确的,检查您正在循环的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37936427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档