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
相关产品推荐
相关产品推荐

