Tkinter中如何实现每次点击按钮让图片向下移动固定像素
问题分析
- 每次触发点击事件都会重新创建图片Label控件,并非移动原有控件,多次点击会出现多个图片重叠的问题
- y坐标计算是固定值
30+30,没有存储历史坐标实现累加,所以位置不会变化 - 每次点击都重复加载图片资源,属于不必要的性能消耗
修改后的可运行代码
import tkinter as tk root = tk.Tk() root.geometry('800x800') # 提前初始化坐标、图片、Label控件,仅执行一次 current_y = 30 box_image = tk.PhotoImage(file='apple.png') panel2 = tk.Label(root, image=box_image, bg='#f7f6f6') panel2.image = box_image # 首次放置图片 panel2.place(x=30, y=current_y) def display(): global current_y # 累加y坐标 current_y += 30 # 仅更新已有控件的位置,不需要重复创建 panel2.place(x=30, y=current_y) button = tk.Button(root, text="click me", command=display) button.place(x=0, y=0) root.mainloop()
代码说明
- 所有只需要加载一次的资源(图片、Label控件)都放在函数外初始化,避免重复创建
- 用全局变量
current_y存储图片当前的y坐标,每次点击累加30即可实现逐次下移的效果 - 直接调用已有Label的
place()方法更新坐标即可,不需要新建控件
内容的提问来源于stack exchange,提问作者Minbutt
相关产品推荐
相关产品推荐

