Tkinter 中的 command ,怎么未起作用 ?
本帖最后由 dragov 于 2024-5-4 16:24 编辑from tkinter import *
root=Tk()
a=[{"name":"中国革命史","color":"bisque"},
{"name":"退出","color":"turquoise"}]
def jy() :
Toplevel(root)
def secede() :
root.destroy()
for i in range (len(a)) :
Button(root,text=a["name"],foreground=a["color"]).pack()
if a["name"] == "退出":
command=secede
else :
command=jy
mainloop()
错 在 哪 ? 代码中存在几个错误。首先,在`for`循环中,你应该使用`range(len(a))`来迭代列表`a`的索引,而不是迭代`a`本身。其次,你未在`Button`创建时指定`command`参数。最后,你需要将`mainloop()`放到`root.destroy()`之前。以下是修复了这些错误的代码:
from tkinter import *
root = Tk()
a = ["按钮1", "按钮2", "退出"]
def jy():
Toplevel(root)
def secede():
root.destroy()
for i in range(len(a)):
btn = Button(root, text=a, foreground=a)
if a == "退出":
btn.config(command=secede)
else:
btn.config(command=jy)
btn.pack()
root.mainloop()
这样,当点击“退出”按钮时,窗口将被销毁;其他按钮将弹出一个新的顶级窗口。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 command=secede你这么写只是一个变量{:10_245:} 某一个“天” 发表于 2024-5-4 17:12
command=secede你这么写只是一个变量
secede 是一个函数名的 ! dragov 发表于 2024-5-4 17:24
secede 是一个函数名的 !
年轻人啊 你这写法不规范{:10_277:}
from tkinter import *
root=Tk()
a=[{"name":"中国革命史","color":"bisque"},
{"name":"退出","color":"turquoise"}]
def jy() :
Toplevel(root)
def secede() :
root.destroy()
for i in range (len(a)) :
b = Button(root,text=a["name"],foreground=a["color"])
b.pack()
if a["name"] == "退出":
b.config(command=secede)
else :
b.config(command=jy)
root.mainloop() dragov 发表于 2024-5-4 17:24
secede 是一个函数名的 !
尽量不要Button(root,text=a["name"],foreground=a["color"]).pack() 你这tkinter基础不行啊 本帖最后由 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()
页:
[1]