【问题标题】:Clearing objects from a frame, without deleting the Frame从框架中清除对象,而不删除框架
【发布时间】:2021-03-19 11:30:56
【问题描述】:

我正在尝试创建一个简单的销售点系统,当按下按钮时,它的数量和价格会相加,最终会显示一个总数(还没有达到这一点)

我决定还加入一个清除按钮,该按钮将清除显示点击项目及其价格+数量的框架,但是我在清除框架时遇到了一些问题,之后仍然能够点击按钮。

这是项目按钮的代码:

def AddButton():
    global item_num #calls global variable
    item_num += 1
    item_text = "Chips        2.00"+"       "+str(item_num) #concatonates text & variable
    item1.config(text=item_text) #updates label text - doesn't add multiple 
    item1.pack()
    
addButton = Button(itemFrame, text="Chips", width=10, height=10, command=AddButton)
addButton.grid(row=1, column=1)
item1 = Label(receiptFrame)

我开始尝试像这样使用 .destroy:

def clearClick(): #blank function for clear button
    receiptFrame.destroy()

但是,由于这会完全删除框架,因此在清除框架后我无法重新输入更多项目

我也尝试重新创建框架:

def clearClick(): #blank function for clear button
    receiptFrame.destroy()
    receiptFrame = Frame(root, width=600, height=500, bd=5, relief="ridge")
    receiptFrame.grid(row=1, column=3, columnspan=2)

但这仍然不起作用

有没有办法在不删除框架本身的情况下清除框架的内容,还是必须使用 .destroy?

【问题讨论】:

    标签: python tkinter button frame


    【解决方案1】:

    fr.winfo_children() 返回框架内小部件的list

    root = tk.Tk()
    fr = tk.Frame()
    lb = tk.Label(fr)
    lb.grid()
    print(fr.winfo_children())
    for child in fr.winfo_children():
        child.destroy()
    print(fr.winfo_children()) # Now empty
    

    【讨论】:

      猜你喜欢
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 2012-06-30
      相关资源
      最近更新 更多