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

Tkinter执行canvas.delete('all')后仅显示单个按钮的问题求助

问题分析与解决

问题根源

你设置的四个运算按钮,其command参数都绑定了math_operators函数——这个函数的逻辑是先清空画布,再重新创建四个按钮。点击按钮时,函数会执行「清空画布→重新生成所有按钮」的流程,最后创建的Multiplikasjon按钮会作为最后一个元素渲染,导致你误以为界面只剩这一个按钮,而非真正清空所有元素。

解决方案

将按钮的command绑定到你定义的clear_command函数(或功能相同的select_math_operators),这样点击按钮时只会执行清空画布的操作,不会重新创建按钮。

同时可以清理launch_button函数里重复的canvas.delete("all")语句,减少冗余代码。

修改后的核心代码片段

def math_operators():
    canvas.delete('all')

    addisjon_button = Button(screen, text="Addisjon", bg='red', padx='22', pady='5', font=('Arial', 15), command=clear_command)
    canvas.create_window(150, 200, window=addisjon_button)

    divisjon_button = Button(screen, text="Divisjon", bg='green', padx='22', pady='5', font=('Arial', 15), command=clear_command)
    canvas.create_window(360, 200, window=divisjon_button)

    substraksjon_button = Button(screen, text="Substraksjon", bg='blue', padx='22', pady='5', font=('Arial', 15), command=clear_command)
    canvas.create_window(380, 300, window=substraksjon_button)

    multiplikasjon_button = Button(screen, text="Multiplikasjon", bg='orange', padx='22', pady='5', font=('Arial', 15), command=clear_command)
    canvas.create_window(150, 300, window=multiplikasjon_button)

额外优化:clear_command和select_math_operators功能完全重复,可以删除其中一个,保持代码简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:35:30