Tkinter-在下拉列表中选择其他选项时如何更新界面

时间:2018-12-18 03:03:09

标签: python python-3.x python-2.7 tkinter

我正在使用tkinter在python中创建节分析GUI。

我创建了一个下拉列表,并且界面可以通过不同的选择进行更改,但是在第二次选择时,似乎新界面(某些条目或文本)仅覆盖了第一个界面。

我想知道如何删除第一个界面,以便可以使用下拉列表中的选择立即更新界面。

这是代码:

import tkinter as tk
import tkinter.ttk
def secdata( *args ):
    t = sectype.get()
    if t=='Rec_Shape':
        tk.ttk.Label(monty1, text="REC_Width").grid(column=0, row=1)
        wid=tk.StringVar()
        widdata=tk.ttk.Entry(monty1,width=5,textvariable=wid)
        widdata.grid(column=1,row=1)
        tk.ttk.Label(monty1, text="REC_Height").grid(column=0, row=2)
        hei=tk.StringVar()
        heidata=tk.ttk.Entry(monty1,width=5,textvariable=hei)
        heidata.grid(column=1,row=2)
    else:
        tk.ttk.Label(monty1, text="Flange_Width").grid(column=0, row=1)
        wid1=tk.StringVar()
        wid1data=tk.ttk.Entry(monty1,width=5,textvariable=wid1)
        wid1data.grid(column=1,row=1)
        tk.ttk.Label(monty1, text="Web_Width").grid(column=0, row=2)
        wid2=tk.StringVar()
        wid2data=tk.ttk.Entry(monty1,width=5,textvariable=wid2)
        wid2data.grid(column=1,row=2)
        tk.ttk.Label(monty1, text="Flange_Height").grid(column=0, row=3)
        hei1=tk.StringVar()
        hei1data=tk.ttk.Entry(monty1,width=5,textvariable=hei1)
        hei1data.grid(column=1,row=3)
        tk.ttk.Label(monty1, text="Total_Height").grid(column=0, row=4)
        hei2=tk.StringVar()
        hei2data=tk.ttk.Entry(monty1,width=5,textvariable=hei2)
        hei2data.grid(column=1,row=4)
window=tk.Tk()
window.title('Section Analysis')
window.geometry('500x400')
tabControl=tk.ttk.Notebook(window)
tab1=tk.ttk.Frame(tabControl)
tabControl.add(tab1,text='Bending')
tabControl.pack(expand=1,fill='both')

monty1=tk.ttk.LabelFrame(tab1,text='Bending')
monty1.grid(column=0, row=0, padx=8, pady=4)
tk.ttk.Label(monty1, text="Sectype:").grid(column=0, row=0, sticky='W')
sectype=tk.ttk.Combobox(monty1,state='readonly')
sectype.grid(column=1, row=0)
sectype['value']=('Rec_Shape','T_Shape')
sectype.current(0)
sectype.bind("<<ComboboxSelected>>",secdata)
monty1.mainloop()
window.mainloop()

0 个答案:

没有答案