zxteach 2020-10-19 02:13 采纳率: 0%
浏览 54

自动创建的按钮列表,为什么只影响最后一个按钮的command 其它按钮都是调用最后一个按钮的command?

以下创建的按钮列表,为什么不管点击那个按钮都是调用 最后一个按钮的“等号”

import tkinter as tk

def run(text):
    显示屏["text"]=显示屏["text"]+text
    print(text)

#创建计算器窗体
计算器窗体=tk.Tk()  #创建窗体
计算器窗体.geometry("261x324") #设置窗体的大小,第1个值为宽度,第2个值为高度,单位是像素
计算器窗体.title("计算器") #设置窗体的标题文本
计算器窗体["bg"]="#ff0000" #设置窗体的背景颜色

显示屏空图=tk.PhotoImage(width=257,height=60)

#创建计算器显示屏
显示屏=tk.Label(计算器窗体,text="计算器",bg="#E2EFDA",image=显示屏空图,borderwidth=0,compound="center",font=(None,20),)
显示屏.place(x=1,y=1)

空图=tk.PhotoImage(width=60,height=60)

#创建按键
按钮数据=["+","-","*","/","1","2","3","4","5","6","7","8","9","0",".","="]
按钮=[]
for i in range(len(按钮数据)):
    按钮.append(None)

xx=1
yy=64
for i in range(len(按钮数据)):
    按钮[i]=tk.Button(计算器窗体,text=按钮数据[i],bg="#fff2CC",borderwidth=0,image=空图,compound="center",font=(None,20),command=lambda:run(按钮数据[i]))
    按钮[i].place(x=xx+(i % 4)*65,y=yy+(i//4)*65)
    print(按钮数据[i])


计算器窗体.mainloop()


  • 写回答

1条回答 默认 最新

  • 不喝水的鱼 2020-10-19 13:42
    关注

    https://www.zhihu.com/question/399386753

    command=lambda:run(buttons[i])
    

    修改成

    command=lambda i=i:run(buttons[i])
    
    评论

报告相同问题?

悬赏问题

  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果