当从下拉菜单中选择一个不同的选项时,您需要删除以前的内容,然后创建新的小部件
在制作形状的每个函数中,首先需要销毁小部件,然后创建新的小部件
我已修复代码: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次
本文介绍了一个使用Tkinter创建的图形用户界面(GUI)应用程序,该程序可以根据用户的选择计算不同四边形的面积,并通过下拉菜单进行选项切换。每次切换时,会清除之前的输入并重新创建必要的输入控件。
283

被折叠的 条评论
为什么被折叠?



