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

Tkinter按钮点击后消失求助:需保留按钮并显示消息

解决Tkinter按钮点击后消失的问题

问题根源:你把提示文本的Label直接添加到了Button组件内部,Button并不是用来承载其他组件的容器,当你在Button上执行pack()添加Label时,会破坏Button自身的布局结构,导致按钮看起来“消失”了。

修改方案

给每个按钮单独准备一个用来显示提示消息的容器(比如Frame),把提示Label放到这些容器里,而不是Button上。

修改后的完整代码

import tkinter

app = tkinter.Tk()
app.geometry("1080x2400")

title = tkinter.Label(
    app, text="contador de sets y descansos", font=("Arial", 30))
title.pack(side=tkinter.TOP, fill=tkinter.BOTH)

# 主容器,用来放按钮和消息区域
design = tkinter.Frame(app, bg="white")
design.pack(fill=tkinter.BOTH, expand=True)

# 为sets按钮创建消息容器
sets_frame = tkinter.Frame(design, bg="white")
sets_frame.pack(side=tkinter.LEFT, padx=20, pady=20)

def series():
    # 把提示Label放到专门的sets_frame里,而不是Button上
    label = tkinter.Label(sets_frame, text="completed a set")
    label.pack()

sets = tkinter.Button(sets_frame, text="sets", padx=40,
                      pady=20, font=("Arial", 20), command=series)
sets.pack()

# 为rest按钮创建消息容器
rest_frame = tkinter.Frame(design, bg="white")
rest_frame.pack(side=tkinter.RIGHT, padx=20, pady=20)

def descanso():
    # 把提示Label放到专门的rest_frame里,而不是Button上
    label = tkinter.Label(rest_frame, text="completed rest")
    label.pack()

rest = tkinter.Button(rest_frame, text="rest", padx=40,
                      pady=20, font=("Arial", 20), command=descanso)
rest.pack()

app.mainloop()

关键改动说明

  • 把原来的design从Label改成Frame,Frame是专门的容器组件,更适合用来组织其他组件
  • 给每个按钮创建独立的Frame(sets_frame和rest_frame),按钮和提示消息都放在各自的Frame里
  • 回调函数中,将提示Label添加到对应的Frame容器中,不再直接关联到Button上

这样点击按钮后,按钮会保持原样,同时在按钮下方显示提示消息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:15:37