当前位置: 首页 > 面试题库 >

动态生成Tkinter按钮

闻人思聪
2023-03-14
问题内容

我想生成n大量的Tkinter Button,它们可以做不同的事情。我有以下代码:

import Tkinter as tk

for i in range(boardWidth):
    newButton = tk.Button(root, text=str(i+1),
                    command=lambda: Board.playColumn(i+1, Board.getCurrentPlayer()))
    Board.boardButtons.append(newButton)

如果boardWidth为5,尽管我得到标记1为的按钮,但5单击它们时都可以Board.playColumn(5, Board.getCurrentPlayer())

我需要第一个按钮执行Board.playColumn(1, Board.getCurrentPlayer()),第二个按钮执行,Board.playColumn(2, Board.getCurrentPlayer())依此类推。


问题答案:

我认为问题在于,循环结束后,会lambda获取的最终值。这应该解决(未测试):i``for

import Tkinter as tk

for i in range(boardWidth):
    newButton = tk.Button(root, text=str(i+1),
                    command=lambda j=i+1: Board.playColumn(j, Board.getCurrentPlayer()))
    Board.boardButtons.append(newButton)

更新资料

顺便说一句,这是通过在lambda函数中添加一个自变量的默认值来实现的,该默认值i是根据在循环中创建每个变量时的值计算得出的,而不是i在稍后执行其中的闭包时返回通过闭包的最终值。



 类似资料:
  • 本文向大家介绍C#动态生成按钮及定义按钮事件的方法,包括了C#动态生成按钮及定义按钮事件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#动态生成按钮及定义按钮事件的方法。分享给大家供大家参考。具体实现方法如下: 1、后台生成input的button按钮 写入到界面中 2、后台回发拦截与处理 希望本文所述对大家的C#程序设计有所帮助。

  • 问题内容: 我只是想知道。.动态创建的PayPal按钮,非常不安全并且容易“被黑客攻击”吗? 像这样: 当您可以使用FireBug修改代码时,直接更改产品价格即可。 我问的原因是,因为我可能/将开始开发一个电子商务类系统,可以在该系统中添加产品,而无需在PayPal中进行添加。 问题答案: 您应该使用如下的PayPal Button API: 然后,您可以使用cURL将其发送到他们的API 然后生

  • 问题内容: 假设我有一个格式为基本XML的文件,如下所示: 我想在运行时变成这样的东西: …,然后将新创建的枚举传递给我的应用程序。我将如何实现这样的目标?可以吗 问题答案: 您尝试做的事情没有任何意义。枚举实际上仅是为了编译时的利益,因为它们表示一组固定的常量。在运行时,动态生成的枚举的含义是什么- 与普通对象有什么不同?例如: 您的XML可以解析为新实例化的对象,这些对象可以存储在某些程序中,

  • 我正在尝试为一栋建筑制作一个模拟电梯的GUI(实际上是为了测试线程/c扫描),但当生成电梯控制面板的按钮和每个楼层的按钮时,我有点卡住了。我考虑为每层楼生成一对新的按钮,并为每部电梯生成一个新的控制面板。此外,拥有不同数量的楼层也很困难。不管怎样,我的问题是,这样做最好的方式是什么?也许不必为每件事都生成新的按钮,只需使用一组按钮并更改每个楼层/电梯的操作?我这么问是因为我对GUI不太熟悉。谢谢你

  • GIF(Graphics Interchange Format,图形交换格式)是一种“位图”图像格式,它以 作为图像的扩展名。GIF 图片非常适合在互联网中使用,这是因为它采用了图像预压缩技术,该技术的应用,在一定程度上减少了图像传播、加载所消耗的时间。 与其他格式的图片相比,GIF 还有一项非常重要的应用,那就是生成动态图。我们知道,Pillow 能够处理多种图像格式,包括 GIF 格式,它可以

  • 我有一个GraphQL服务器,它能够为指定源提供timeseries数据(例如,传感器数据)。获取传感器数据的示例查询可能是: 在我的前端,我想允许用户选择一个或多个源,并显示一个图表,每一个都有一行。通过使用下面这样的查询,似乎可以实现以下操作: 大多数GraphQL教程似乎关注于静态查询(例如,唯一改变的是变量,而不是请求的实际形状)--但在我的例子中,我需要查询本身是动态的(为我选择的每个I