You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

关键修改说明

  1. 移除了初始化按钮时的无效判断,直接创建默认的Submit按钮
  2. 在Submit函数中新增判断:当处理的是SecondName的提交时,通过config()方法动态修改按钮的文本为"Close",并将命令绑定为Close函数

预期效果

输入SecondName的用户名和密码并点击Submit后,按钮文本自动变为Close,点击该按钮即可关闭窗口。

内容的提问来源于stack exchange,提问作者arnpry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:25:18