特金特。创建多个具有“不同”命令功能的按钮

2023-11-24

首先,对这个标题感到抱歉,我找不到更好的标题。

以下代码是我的 Python 程序中遇到的问题的最小化版本(顺便说一句,我是新手)。

def onClick(i):
    print "This is Button: " + str(i)
    return

def start():
    b = [0 for x in range(5)]
    win = Tkinter.Tk()
    for i in range(5):
        b[i] = Tkinter.Button(win,height=10,width=100,command=lambda : onClick(i))
        b[i].pack()
    return

它能做什么: 无论我点击哪个按钮,它都会显示“这是按钮:4”。

我想要的是: 第一个按钮应该显示“这是按钮:0”等等。

这是 Python 想要的行为吗?如果答案是肯定的,为什么会这样呢?我该如何修复它?

另一方面,这工作得很好:

def start():        
    x = [0 for x in range(5)]
    for i in range(5):
        x[i] = lambda:onClick(i)
        x[i]()
    return

使用默认参数以避免后期绑定问题(否则i在调用 lambda 函数时绑定,而不是在创建时绑定):

def start():
    buttons = []
    win = Tkinter.Tk()
    for i in range(5):
        b = Tkinter.Button(win, height=10, width=100, command=lambda i=i: onClick(i))
        b.pack()
        buttons.append(b)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

特金特。创建多个具有“不同”命令功能的按钮 的相关文章

  • 如何在 Wampserver 上设置和运行 Python?

    谁能帮我设置 Python 在 Wampserver 上运行 根据我到目前为止所读到的内容 您需要结合使用 Wampser Python mod pyhton 以及对 Apache http conf 文件的调整 我已经尝试过 但我相信在版
  • 将 mysql 连接传递给 python 线程时管道损坏

    我正在尝试将 mysql 连接传递给 python 中的线程 如果我在工作类中进行 mysql 的初始化 则不会出现错误 但是 连接的成本可能很高 因此我尝试仅从调用者函数传递 mysql 连接 请参见下面的代码 但这一直抛出这个错误 20
  • 计算唯一组合的数量,无论列顺序如何

    我有两列类别 两列中都显示相同的可能选项 并且我希望计算每个唯一组合的行数 无论每行 A 列或 B 列 中类别的顺序如何 示例数据框 df1 pd DataFrame A dog cat mouse bunny cat mouse dog
  • 在 Google App Engine 中查找相对路径的好方法是什么?

    所以我用 GAE 完成了简单的 热身 应用程序 现在我想构建一些具有更复杂的目录结构的东西 大致如下 siteroot models controllers controller1 controller2 templates templat
  • 非英语语言(CJK 等)中的 n 元语法名称分析

    我正在致力于对人员数据库进行重复数据删除 对于第一遍 我遵循基本的两步过程 以避免对整个数据库进行 O n 2 操作 如所述在文献中 http nike psu edu publications jcdl05 pdf 首先 我 阻止 迭代整
  • 是否可以“重新设计”IOS 日期选择器?

    我需要一个自定义日期选择器 本质上只是想删除 IOS 版本中的图形 但保留 3 列日期滚动 是否需要从头开始重新构建 所有研究都表明是 或者是否可以仅禁用或交换图像 我自己还没有尝试过 但也许您可以在日期选择器上方添加一个 UIImageV
  • 如何用Python检查一个单词是否是英文单词?

    我想在 Python 程序中检查一个单词是否在英语词典中 我相信 nltk wordnet 接口可能是可行的方法 但我不知道如何使用它来完成如此简单的任务 def is english word word pass how to I imp
  • 我可以从 multiprocessing.Process 获取返回值吗?

    我使用 Python 多处理模块在蒙特卡罗代码中实现了一些简单的并行性 我的代码看起来像 montecarlos MonteCarlo f fargs for fargs in farglist jobs multiprocessing P
  • matplotlib 慢速 3D 散点旋转

    我正在使用 matplotlib 来散点图 3D 点矩阵 我正在使用以下代码 import pylab as plt from mpl toolkits mplot3d import Axes3D import numpy as np my
  • 在 Flask 中捕获会话过期

    在 Flask 中 我使用 app permanent session lifetime 强制会话超时 有没有办法在会话到期之前接收回调 以便我可以执行清理 查看文档我没有看到相应的信号 None
  • 在 AWS Transcribe 中实时获取 BadRequestException

    我从亚马逊流 api 收到此响应 任何人都可以帮我解决我在这里做错的事情吗 b x00 x00 x00 xa3 x00 x00 x00ah x10k xe1 x0f 异常类型 x07 x00 x13BadRequestException r
  • Keras 中的 load_model 和 Lambda 层

    如何加载具有 lambda 层的模型 这是重现行为的代码 MEAN LANDMARKS np load data mean shape 68 npy def add mean landmarks x mean landmarks np ar
  • 使用seaborn,我如何在散点图上画一条我选择的线?

    我希望能够在seaborn 生成的图中画出一条符合我规范的线 我选择的图是 JointGrid 但任何散点图都可以 我怀疑seaborn可能不容易做到这一点 以下是绘制数据的代码 来自 Iris 数据集的花瓣长度和花瓣宽度的数据帧 impo
  • url 查询中的字符 %7D 意味着什么?

    如果我使用 url 访问我的 web 应用程序 vi 5907399890173952 html 然后它就可以工作了 但是当我查看日志文件时 googlebot 会尝试访问一个类似的网址 该网址会生成异常 vi 59073998901739
  • 如何针对 Heroku 路由器的代理/缓冲情况优化 uWSGI?

    我在 Heroku 的生产中使用 uWSGI 已有一年多了 它似乎比 Gunicorn 处理所有事情都要好得多 随着我们的流量扩大 我试图更好地理解heroku的路由器和uWSGI之间的接口 以优化和防止问题 但它对我来说仍然相当不透明 我
  • 尝试打开 Excel 时出现“KeyError:“存档中没有名为“xl/sharedStrings.xml”的项目”

    我正在尝试使用 Python 脚本将数据导入 PowerBi 以便我可以安排它定期刷新数据 我面临着从 Excel 文件获取数据并收到错误的挑战 KeyError 没有名为 xl sharedStrings xml 的项目在档案中 导入时
  • 如何在Tensorflow中读取json文件?

    我正在尝试编写一个函数 用于读取张量流中的 json 文件 json 文件具有以下结构 bounding box y 98 5 x 94 0 height 197 width 188 rotation yaw 27 970195770263
  • 如何在不使用pygame的情况下检测按键事件和按键按住事件

    我目前正在寻找一个能够检测 监视键盘的库 我的目的是检测何时按下某个键 以及当它发生时应该发生一些事情 大多数 SO 帖子建议使用 pygame 但我发现它有点太多了 涉及一个像这样的库来完成这个简单的任务 我也尝试过pynput 这导致只
  • 如何有效地找到两个轮廓集之间的所有交点

    我想知道找到两组轮廓线之间所有交点 舍入误差 的最佳方法 哪种方法最好 这是示例 import matplotlib pyplot as plt import numpy as np x np linspace 1 1 500 X Y np
  • 从 paramiko 获取 PID

    我找不到一个简单的答案 我正在使用 paramiko 远程登录并执行多个进程 我需要每个进程的 PID 以便稍后检查它们 paramiko 中似乎没有函数来获取执行命令的 PID 所以我尝试使用以下命令 stdin stdout stder

随机推荐