Python 如何验证tkinter中的按钮,使函数只调用一次?

Python 如何验证tkinter中的按钮,使函数只调用一次?,python,button,user-interface,tkinter,Python,Button,User Interface,Tkinter,当我多次按下“回车”按钮时,文本字段将继续显示,但我需要它,以便在我输入姓名并按下按钮后,按钮将停用。我该怎么做 class Enter_Name_Window(tk.Toplevel): '''A simple instruction window''' def __init__(self, parent): tk.Toplevel.__init__(self, parent) self.text = tk.Text(self, width=40

当我多次按下“回车”按钮时,文本字段将继续显示,但我需要它,以便在我输入姓名并按下按钮后,按钮将停用。我该怎么做

class Enter_Name_Window(tk.Toplevel):
    '''A simple instruction window'''
    def __init__(self, parent):
        tk.Toplevel.__init__(self, parent)
        self.text = tk.Text(self, width=40, height=2)
        self.text.pack(side="top", fill="both", expand=True)
        self.text.insert("end", "Please enter your name and class. ")

        enter_name = Entry(self)
        enter_name.pack()

        enter_name.focus_set()

    def callback():
        self.display_name = tk.Text(self, width=40, height=2)
        self.display_name.pack(side="top", fill="both", expand=True)
        self.display_name.insert("end", "Now please enter your tutor group.")
        tutor = Entry(self)
        tutor.pack()

        tutor.focus_set()

        Enter_0_2 = Button(self, text="Enter", width=10, command=callback2)
        Enter_0_2.pack()

    def callback2():
        self.display_name = tk.Text(self, width=40, height=2)
        self.display_name.pack(side="top", fill="both", expand=True)
        self.display_name.insert("end", "Let's begin! Exit back to main screen.")


    Enter_0 = Button(self, text="Enter", width=10, command=callback)
    Enter_0.pack()
使用按钮的
config()
方法中的
state=“disabled”
禁用小部件。您可以使用
state=“normal”
以类似的方式启用禁用的小部件

基于示例代码的示例:

import Tkinter as tk


class Application(tk.Frame):

    def __init__(self, master):
        tk.Frame.__init__(self, master)
        self.text = tk.Text(self, width=40, height=2)
        self.text.pack(side="top", fill="both", expand=True)
        self.text.insert("end", "Please enter your name and class. ")

        enter_name = tk.Entry(self)
        enter_name.pack()
        self.enter_0 = tk.Button(self, text="Enter", width=10, command=self.callback)
        self.enter_0.pack()

        enter_name.focus_set()
        self.pack()

    def callback(self):
        self.display_name = tk.Text(self, width=40, height=2)
        self.display_name.pack(side="top", fill="both", expand=True)
        self.display_name.insert("end", "Now please enter your tutor group.")
        tutor = tk.Entry(self)
        tutor.pack()
        tutor.focus_set()
        self.enter_0.config(state="disabled")

        Enter_0_2 = tk.Button(self, text="Enter", width=10, command=self.callback2)
        Enter_0_2.pack()

    def callback2(self):
        self.display_name = tk.Text(self, width=40, height=2)
        self.display_name.pack(side="top", fill="both", expand=True)
        self.display_name.insert("end", "Let's begin! Exit back to main screen.")

root = tk.Tk()
root.geometry("600x400")
app = Application(root)
app.mainloop()

只有当鼠标指针位于按钮上方时,才应使用“活动”,否则“正常”是正确的状态。@BryanOakley谢谢您的更正,我已经更新了答案。