Skip to main content
 首页 » 编程设计

python之如何验证 tkinter 中的按钮以便该函数只被调用一次

2025年05月04日9落叶无声

当我多次按下“Enter”按钮时,文本字段将继续显示,但我想要它,这样一旦我输入了我的名字并按下按钮,该按钮就会停用。我该怎么做?

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

请您参考如下方法:

在 Button 的 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()