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

