Tkinter二次点击Submit按钮后修改按钮文本与关闭窗口功能
解决Tkinter按钮二次点击后切换文本与功能的问题
你的核心问题是初始化按钮时的if/else仅在程序启动时执行一次,无法在提交SecondName后动态更新按钮状态。以下是修正后的代码,可实现需求:
import tkinter as tk root = tk.Tk() user_var = tk.StringVar() pass_var = tk.StringVar() entries = {} def Submit(): user = user_var.get() passw = pass_var.get() label_text = user_label["text"] char = label_text.split()[0] entries[char] = (user, passw) if char == "FirstName": user_label["text"] = "SecondName " + user_label["text"].split()[1] pass_label["text"] = "SecondName " + pass_label["text"].split()[1] elif char == "SecondName": # 切换按钮文本与功能 sub_btn.config(text="Close", command=Close) user_var.set("") pass_var.set("") print(entries) def Close(): root.quit() user_label = tk.Label(root, text="FirstName Username", width=21) user_entry = tk.Entry(root, textvariable=user_var) pass_label = tk.Label(root, text="FirstName Password", width=21) pass_entry = tk.Entry(root, textvariable=pass_var, show="•") # 直接初始化Submit按钮,后续在函数内动态修改 sub_btn = tk.Button(root, text="Submit", command=Submit) sub_btn.grid(row=2, column=0) user_label.grid(row=0, column=0) user_entry.grid(row=0, column=1) pass_label.grid(row=1, column=0) pass_entry.grid(row=1, column=1) root.mainloop()
关键修改说明
- 移除了初始化按钮时的无效判断,直接创建默认的Submit按钮
- 在
Submit函数中新增判断:当处理的是SecondName的提交时,通过config()方法动态修改按钮的文本为"Close",并将命令绑定为Close函数
预期效果
输入SecondName的用户名和密码并点击Submit后,按钮文本自动变为Close,点击该按钮即可关闭窗口。
内容的提问来源于stack exchange,提问作者arnpry
相关产品推荐
相关产品推荐

