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

如何将Tkinter窗口中的正方形居中至画布中心点?

Tkinter画布正方形居中实现方法

你的问题核心是让矩形中心对齐画布中心,有两种简单的实现方式:

方式一:创建矩形时直接计算居中坐标

先确定正方形的半边长(你的正方形边长为50px,半边长就是25),然后用画布中心点加减半边长,得到矩形的四个顶点坐标:

from tkinter import *
window = Tk()
c = Canvas(window, width=1000, height=700, bg='midnight blue')
c.pack()

# 正方形边长的一半
half_size = 25
# 画布中心点
cMiddle = [int(c['width']) / 2, int(c['height']) / 2]
# 直接创建居中的正方形
playerID = c.create_rectangle(
    cMiddle[0] - half_size, cMiddle[1] - half_size,
    cMiddle[0] + half_size, cMiddle[1] + half_size,
    fill='grey'
)

window.mainloop()

方式二:创建后移动矩形到居中位置

如果已经创建了矩形,可以通过move方法或修改坐标的方式调整位置:

用move方法计算偏移量

先算出当前矩形的中心(你的初始矩形中心是(125,125)),再计算画布中心与当前中心的偏移量,移动矩形:

from tkinter import *
window = Tk()
c = Canvas(window, width=1000, height=700, bg='midnight blue')
c.pack()

playerID = c.create_rectangle(100, 100, 150, 150, fill='grey')
cMiddle = [int(c['width']) / 2, int(c['height']) / 2]

# 计算当前矩形的中心
current_center_x = (100 + 150) / 2
current_center_y = (100 + 150) / 2
# 计算偏移量
dx = cMiddle[0] - current_center_x
dy = cMiddle[1] - current_center_y
# 移动矩形
c.move(playerID, dx, dy)

window.mainloop()

直接修改矩形坐标

也可以用coords方法直接设置新的坐标:

from tkinter import *
window = Tk()
c = Canvas(window, width=1000, height=700, bg='midnight blue')
c.pack()

playerID = c.create_rectangle(100, 100, 150, 150, fill='grey')
cMiddle = [int(c['width']) / 2, int(c['height']) / 2]
half_size = 25

# 直接更新矩形坐标到居中位置
c.coords(playerID,
    cMiddle[0] - half_size, cMiddle[1] - half_size,
    cMiddle[0] + half_size, cMiddle[1] + half_size
)

window.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 17:22:11