【问题标题】:Deleting Widgets(Text,Label,Button) in Tkinter Python Created Using For Loop在使用 For 循环创建的 Tkinter Python 中删除小部件(文本、标签、按钮)
【发布时间】:2021-06-30 15:37:30
【问题描述】:
def removal():
list = [list for x in panels if not x.grid_remove()]
print(panels)
for ce in panels:
    ce.grid_remove()
    ce
print(panels)

def selectgoodtip():
    i=0
    b=0
    global panel1,panel2,labels,panels,panels2
    for te in selectgoods:
            labels = Label(scrollable_frame, text=te)
            labels.config(font=("Open Sans", 8))
            labels.grid(row=i,column=1,sticky='sw')
            i=i+1
    panels = []
    panels2 = []
    for ce in selectpic:
        pathtophoto = Image.open(ce)
        image1 = ImageTk.PhotoImage(pathtophoto)
        panel1 = Label(scrollable_frame, image=image1)
        panel1.image = image1  # keep a reference
        panel1.grid(row=b,column=0)
        panels.append(panel1)
        remove = Image.open("remove1.png")
        image2 = ImageTk.PhotoImage(remove)
        panel2 = Button(scrollable_frame, image=image2, bg='#ffffff', relief=FLAT,command=lambda:removal())
        panel2.image = image2  # keep a reference
        panel2.grid(row=b, column=3, sticky='ne')
        panels2.append(panel2)
        b=b+1
        #selectpic.clear()
#Operation Tips
#Product selection processing
def addselectfood(name,money,pic):
    global selectmoney,selectgoods,selectpic
    if len(selectgoods)<17:
        selectgoods.append(name)
        selectmoney= selectmoney+money
        selectpic.append(pic)
        selectgoodtip()

Example Image of what i mean

我希望 x 按钮 Panel2 使用删除功能删除自身、panel1 和在 for 循环中创建的标签,以便删除侧面板上的项目以删除它?所以每个 X 按钮都会删除它负责的项目?

【问题讨论】:

  • 您是否尝试过简单地将小部件保存在列表中,然后遍历列表?

标签: python function tkinter


【解决方案1】:

lambda 来救援!这是我制作的一个简单程序,仅供参考。您可以做的是为每个按钮创建一个局部变量,使用lambda 并销毁小部件。

这是完成这项工作的主线: b2.config(command=lambda x=b1,y=b2: [x.destroy(),y.destroy()])

from tkinter import *
root=Tk()
for i in range(10):
    b1=Button(root,text=f"Button {i}")
    b1.grid(row=i,column=1)
    b2=Button(root,text=f"Delete Button {i}")
    b2.grid(row=i,column=2,padx=10)
    b2.config(command=lambda x=b1,y=b2: [x.destroy(),y.destroy()])

root.mainloop()

【讨论】:

  • 非常感谢你,你最好的。非常感谢您的帮助。
  • 欢迎@DragonKing,希望它能解决问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-14
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多