Python 如何重复删除不同名称的项目
最近我正在开发一个程序,当点击一个按钮时,它会删除他们通过.yml文件制作的所有tkinter按钮。以下是我的意思的一个例子:Python 如何重复删除不同名称的项目,python,tkinter,Python,Tkinter,最近我正在开发一个程序,当点击一个按钮时,它会删除他们通过.yml文件制作的所有tkinter按钮。以下是我的意思的一个例子: (All TKinter Root Init Here) button1 = Button(root, text="hi") button2 = Button(root, text="hi again") button3 = Button(root, text="hi again again") button
(All TKinter Root Init Here)
button1 = Button(root, text="hi")
button2 = Button(root, text="hi again")
button3 = Button(root, text="hi again again")
button4 = Button(root, text="OK this is getting tiring")
button5 = Button(root, text="go away")
button6 = Button(root, text="...")
def del_all():
for i in range(999999999):
button(i).place_forget() #I was hoping to make button(i) give the output button1, then button2, and so on.
root.mainloop()
解决方案取决于按钮的命名/存储方式 例如,如果按钮是一个列表。比如:
buttons = ['button1', 'button2', 'button3', 'button4']
然后,您可以通过调用以下命令进行删除:
buttons.remove()
这将“清除”列表。在tkinter中尝试
nametowidget
,例如:
import tkinter as tk
r = tk.Tk()
for i in range(5):
tk.Button(r,text=i).pack()
r.nametowidget(".!button").pack_forget()
r.mainloop()
这将删除第一个按钮。如果要删除第二个按钮,需要使用r.nametowidget(“!button2”).pack\u forget()
因此,对于您的代码,您可能需要使用:
def del_all():
root.nametowidget(".!button").place_forget()
for i in range(2, 999999999):
root.nametowidget(".!button"+str(i)).place_forget()
关于名称Widget
中的参数,是一个清晰的描述
您还可以使用
winfo_children
和.widgetName
检查它是否是一个按钮,如:
import tkinter as tk
r = tk.Tk()
tk.Label(r, text="test").pack()
for i in range(5):
tk.Button(r,text=i).pack()
for i in r.winfo_children():
if i.widgetName == 'button':
i.pack_forget()
r.mainloop()
我想你不明白我在说什么。我的目标不是从列表中删除项目,而是删除tkinter按钮小部件。这是相同的想法。你可以将tkinter按钮小部件放入列表并删除列表。问题是,我是一名初学者,所以我不知道如何操作。如果不了解按钮的名称,很难说,请包含更多代码