首页 > 解决方案 > 当我在 tkinter 中单击按钮两次时,避免标签显示两次

问题描述

我正在做一个数学测验,我正在尝试进行错误处理。我只想self.wrongnum.destroy()在之前显示标签时才被调用wrongnum。现在发生的事情是,如果我单击一个按钮两次(wrongnum如果用户输入的值有问题,它将显示标签),标签也会显示在另一个之上,但只有 1 个标签被破坏。我该怎么做才能避免出现 2 个相同的标签?或者我怎样才能摧毁两者?

以下是我的代码,如果我制作它的方式有任何其他问题,请告诉我。谢谢

    def q2(self, master):
        randomiser()
        global answer
        self.master = master
        self.frame = Frame(master, padx=200, pady=200)
        self.frame.grid()
        self.user_choice = StringVar()
        self.user_choice.set("")
        self.q = Label(self.frame, text="What is {} x {} ?".format(x, y))
        self.q.grid(row=0)
        self.ans = Entry(self.frame, width=50, textvariable=self.user_choice)
        self.ans.grid(row=1)
        answer = x*y
        self.sub = Button(self.frame, text="submit", command=lambda:[self.check(), randomiser()])
        self.sub.grid(row=3)

    def check(self):
        try:
            if self.user_choice == None:
                self.wrongnum = Label(self.frame, text="Please enter a number")
                self.wrongnum.grid(row=5)
                self.necs()
            else:
                self.correct()
        except ValueError:
            self.wrongnum = Label(self.frame, text="Please enter a number")
            self.wrongnum.grid(row=5)

    def correct(self):
        global p
        if int(self.user_choice.get()) == answer:
            cor = Label(self.frame,text="Correct!")
            cor.grid(row=5, pady=20)
            p += 1
            self.sub.destroy()
            self.wrongnum.destroy() 
            nex = Button(self.frame, text="Next", command=self.necs)
            nex.grid(row=4)
        else:
            inc = Label(self.frame,text="incorrect, the correct answer is {}".format(answer))
            inc.grid(row=5, pady=20)
            self.sub.destroy()
            nex = Button(self.frame, text="Next", command=self.necs)
            nex.grid(row=4)

标签: pythontkinter

解决方案


推荐阅读