python - python tkinter按钮中的无效参数值
问题描述
我在将参数传递给在 tkinter 中单击令牌后调用的函数时遇到问题。m 和 n 是从 2 到 9 的整数。
当我单击按钮时,它会打印最大值,即如果 m = 9 且 n = 9,则该函数l_click
仅打印最大值,即在本例中为 9 和 9。
我希望在单击网格中 m = 0 和 n = 0 的按钮后显示值 0.0。请帮助
def l_click():
print("x",x)
print("y",y)
for x in range(m):
pole.append([])
for y in range(n):
pole[x].append(Button(game_window,width='20',height='20',image=photo,command=l_click))
pole[x][y].bind('<Button-3>',r_click)
pole[x][y].grid(row=x, column=y)
解决方案
您面临的问题是关于 python 中的变量范围。问题是l_click()
当时只打印变量的值。由于您希望在声明期间使用该值,因此请l_click
使用 lambda 表达式将它们作为参数传递给函数。反映这一点的代码块类似于:
def l_click(x, y):
print("x",x)
print("y",y)
for x in range(m):
pole.append([])
for y in range(n):
pole[x].append(Button(game_window,width='20',height='20',image=photo,command=lambda x=x, y=y: l_click(x, y)))
pole[x][y].bind('<Button-3>', r_click)
pole[x][y].grid(row=x, column=y)
推荐阅读
- javascript - 使用 React Hooks 构建的 React Div 面板引发违规:元素类型无效
- c# - 在 ASP.NET MVC 中对 DateTime 列进行排序
- python - Python、Pands、股票投资组合滚动价值时间序列问题
- node.js - 在 npm 脚本中使用空格*设置环境变量的跨平台方法
- .net - VB .NET 快速折线图在绘制数据的左侧和右侧显示较大的空白区域
- javascript - 深度克隆一个同时包含 Immutable.js 对象和 vanilla JS 对象的对象
- javascript - 使用 mongoose 将带有 graphql 的文件上传到 mongodb
- python - 使用 arduino 和 python 自动锁定我的电脑
- python - 切换 URL - Python selenium
- javascript - 为什么js振荡器在使用后停止播放声音?