本帖最后由 smallwh 于 2024-5-4 19:20 编辑
不把 command=secede 等写在 Button() 里是不行的。写在外面是把函数名赋值给变量,写在里面才是传参。
下面是一些其他的建议:
1. 列表可以直接 for 循环,不需要 for i in range(len(a)) 。
2. 建议遵守将四个空格作为一个缩进的规范。from tkinter import *
root=Tk()
a=[{"name":"中国革命史","color":"bisque"},
{"name":"退出","color":"turquoise"}]
def jy():
Toplevel(root)
def secede():
root.destroy()
for i in a:
if i["name"] == "退出":
b = Button(root,text=i["name"],foreground=i["color"],command=secede)
b.pack()
else:
b = Button(root,text=i["name"],foreground=i["color"],command=jy)
b.pack()
mainloop()
|