Python 调用函数时清除帧的内容

Python 调用函数时清除帧的内容,python,tkinter,Python,Tkinter,我的程序根据单选按钮的选择创建不同的小部件。一切都很好,但如果选择了另一个单选按钮,我似乎无法清除旧的小部件。这里的建议是:()不起作用。这是相关代码 从主程序: root = Tk() mainframe = ttk.Frame(root, padding="3 3 12 12") mainframe.grid(column=0, row=0, sticky=(N, W, E, S)) mainframe.columnconfigure(0, weight=1) mainframe.rowco

我的程序根据单选按钮的选择创建不同的小部件。一切都很好,但如果选择了另一个单选按钮,我似乎无法清除旧的小部件。这里的建议是:()不起作用。这是相关代码

从主程序:

root = Tk()
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
secondframe = ttk.Frame(mainframe)
secondframe.grid(column=4, row=3)
secondframe.columnconfigure(0, weight=1)
secondframe.columnconfigure(0, weight=1)
然后是函数:

def pct_from_duration():
    """ Calculate needed pct from target duration"""
    tgt_dur_entry = ttk.Entry(mainframe, width=4, textvariable=tgt_dur_inp)
    tgt_dur_entry.grid(column=5, row=3, sticky=(W, E))
    for widget in secondframe.winfo_children():
        widget.destroy()
    ttk.Label(secondframe, textvariable=pct_bond_end).grid(column=1, row=1)
    ttk.Button(mainframe, text="Calculate", command=calculate).grid(column=5, row=4, sticky=W)

FWIW,我没有收到任何错误消息,它只是没有实际删除小部件。这都是Python3.6。

也许这会有所帮助……这是一个函数示例,它正在工作(Python3.5)


请发表一篇文章。不需要在题目中添加诸如“Python”或“tkinter”之类的词。为了达到这个目的,可以使用标签。如果我没有遗漏什么,你做的主要不同的事情就是把整个东西放在一个类中。这样做有什么好处?
import tkinter as tk
from tkinter import *
from tkinter import ttk

class GUI:

    def __init__(self, master):

        def pct_from_duration():
            tgt_dur_entry = ttk.Entry(mainframe, width=4)
            tgt_dur_entry.grid(column=5, row=3, sticky=(W, E))
            for widget in secondframe.winfo_children():
                widget.destroy()
            l3 = ttk.Label(secondframe, text = 'Label').grid(column=1, row=1)
            b2 = ttk.Button(mainframe, text="Calculate").grid(column=5, row=4, sticky=W)

        self.master = master
        mainframe = ttk.Frame(master)
        mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
        mainframe.columnconfigure(0, weight=1)
        mainframe.rowconfigure(0, weight=1)
        secondframe = ttk.Frame(mainframe)
        secondframe.grid(column=4, row=3)
        secondframe.columnconfigure(0, weight=1)
        secondframe.columnconfigure(0, weight=1)
        l = Label(secondframe, text = 'Child_mainframe')
        l.grid()
        l2 = Label(mainframe, text = 'Child_secondframe')
        l2.grid()
        r1 = Radiobutton(master, text="Radiobutton", value=1, command = pct_from_duration).grid()

root = Tk()
root.rowconfigure(0, weight = 1)
root.columnconfigure(1, weight=1)
root.columnconfigure(0, weight=1)
root.columnconfigure(0, weight=2)
my_gui = GUI(root)
root.mainloop()