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

