Python 3.4 tkinter,从菜单

时间:2016-09-25 20:39:57

标签: python tkinter

这是我用来查找不同四边形区域的一个小程序,当我从下拉菜单中选择一个选项时,它可以工作。但是,当我从让我们说方形切换到梯形时,我得到了这个:

2

我想清除窗口,只留下所选的选项。

以下是代码:

from tkinter import *

def square():
    ment = IntVar()
    def mhello():
        mtext = ment.get()
        mtext *= 2
        mlabel2 = Label(mGui, text=mtext).pack()

    mlabel = Label(mGui, text="Square").pack()
    mbutton = Button(mGui, text= "Submit", command = mhello). pack()

    nEntry = Entry(mGui, textvariable=ment).pack()
def rectangle():
    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").pack()

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

    oneEntry = Entry(mGui, textvariable=oneMent).pack()
    twoEntry = Entry(mGui, textvariable=twoMent).pack()

def trapezium():
    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").pack()

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

    oneEntry = Entry(mGui, textvariable=oneMent).pack()
    twoEntry = Entry(mGui, textvariable=twoMent).pack()
    threeEntry = Entry(mGui, textvariable=threeMent).pack()

def rhombus():
    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").pack()

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

    oneEntry = Entry(mGui, textvariable=oneMent).pack()
    twoEntry = Entry(mGui, textvariable=twoMent).pack()

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()

感谢任何可以提供帮助的人。

1 个答案:

答案 0 :(得分:1)

当选择下拉菜单中的其他选项时,您需要删除之前的内容,然后创建新的小部件

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

我修复了代码:

$scope.gridOptions.onRegisterApi = function (gridApi) {
    $scope.gridApi = gridApi;

    gridApi.edit.on.afterCellEdit($scope, function (rowEntity, colDef, newValue, oldValue) {
        if (newValue !== oldValue) {
            rowEntity['change'] = true;
        }
    });
});

此代码有效但可能更短更有效

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

的好习惯