python tkinter frame remove_python3.4tkinter,从菜单中选择一个选项后不清除frame

本文介绍了一个使用Tkinter创建的图形用户界面(GUI)应用程序,该程序可以根据用户的选择计算不同四边形的面积,并通过下拉菜单进行选项切换。每次切换时,会清除之前的输入并重新创建必要的输入控件。

当从下拉菜单中选择一个不同的选项时,您需要删除以前的内容,然后创建新的小部件

在制作形状的每个函数中,首先需要销毁小部件,然后创建新的小部件

我已修复代码:from tkinter import *

global widgets # this list will contain widgets to be deleted

widgets = []

def square():

global widgets

for widget in widgets[:]:

widget.destroy()

widgets.remove(widget)

ment = IntVar()

def mhello():

mtext = ment.get()

mtext *= 2

mlabel2 = Label(mGui, text=mtext)

mlabel = Label(mGui, text="Square")

mbutton = Button(mGui, text= "Submit", command = mhello)

nEntry = Entry(mGui, textvariable=ment)

widgets = widgets[:] + [mlabel, mbutton, nEntry] # destroy these later

for widget in widgets:

widget.pack() # pack them afterwards

def rectangle():

global widgets

for widget in widgets[:]:

widget.destroy()

widgets.remove(widget)

oneMent = IntVar()

twoMent = IntVar()

def mhello():

oneMtext = oneMent.get()

twoMtext = twoMent.get()

mtext = 0

mtext = oneMtext * twoMtext

mlabel2 = Label(mGui, text=mtext).pack()

mlabel = Label(mGui, text="Rectangle/Parallelogram")

mbutton = Button(mGui, text= "Submit", command = mhello)

oneEntry = Entry(mGui, textvariable=oneMent)

twoEntry = Entry(mGui, textvariable=twoMent)

widgets = widgets + [mlabel, mbutton, oneEntry, twoEntry] # destroy these later

for widget in widgets:

widget.pack() # pack them afterwards

def trapezium():

global widgets

for widget in widgets[:]:

widget.destroy()

widgets.remove(widget)

oneMent = IntVar()

twoMent = IntVar()

threeMent = IntVar()

def mhello():

oneMtext = oneMent.get()

twoMtext = twoMent.get()

threeMtext = threeMent.get()

mtext = 0

mtext = oneMtext + twoMtext

mtext /= 2

mtext *= threeMtext

mlabel2 = Label(mGui, text=mtext).pack()

mlabel = Label(mGui, text="Trapezium")

mbutton = Button(mGui, text= "Submit", command = mhello)

oneEntry = Entry(mGui, textvariable=oneMent)

twoEntry = Entry(mGui, textvariable=twoMent)

threeEntry = Entry(mGui, textvariable=threeMent)

widgets = widgets + [mlabel, mbutton, oneEntry, twoEntry, threeEntry] # destroy these later

for widget in widgets:

widget.pack() # pack them afterwards

def rhombus():

global widgets

for widget in widgets[:]:

widget.destroy()

widgets.remove(widget)

oneMent = IntVar()

twoMent = IntVar()

def mhello():

oneMtext = oneMent.get()

twoMtext = twoMent.get()

mtext = 0

mtext = oneMtext * twoMtext

mtext /= 2

mlabel2 = Label(mGui, text=mtext).pack()

mlabel = Label(mGui, text="Rhombus")

mbutton = Button(mGui, text= "Submit", command = mhello)

oneEntry = Entry(mGui, textvariable=oneMent)

twoEntry = Entry(mGui, textvariable=twoMent)

widgets = widgets + [mlabel, mbutton, oneEntry, twoEntry] # destroy these later

for widget in widgets:

widget.pack() # pack them afterwards

def restart():

mGui.destroy()

mGui = Tk()

mGui.geometry("450x450+500+300")

mGui.title("Square Area Finder")

mHomeLabel = Label(mGui, text="Use the drop down menu to select the quadrilateral you want to find the area of.").pack()

menu = Menu(mGui)

mGui.config(menu=menu)

file =Menu(menu)

file.add_command(label="Square", command=square)

file.add_command(label="Rectangle/Parallelogram", command=rectangle)

file.add_command(label="Trapezium", command=trapezium)

file.add_command(label="Rhombus", command=rhombus)

file.add_separator()

file.add_command(label="Quit", command=restart)

menu.add_cascade(label="Options", menu=file)

mGui.mainloop()

这段代码可以工作,但它可能要短得多,效率更高

将相似的代码放入一个单独的函数中,而不是复制4次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值