要保持Tkinter画布原点居中,可以使用create_window()
方法将画布放置在一个主窗口的中心位置,并使用update()
方法实时更新画布的位置。
下面是一个简单的示例代码:
import tkinter as tk
def update_canvas_position(event):
canvas.xview_moveto(0.5)
canvas.yview_moveto(0.5)
root = tk.Tk()
root.geometry("400x400")
canvas = tk.Canvas(root)
canvas.pack(fill="both", expand=True)
canvas.bind("", update_canvas_position)
frame = tk.Frame(canvas)
canvas.create_window(0, 0, anchor="nw", window=frame)
# 在画布上添加一些元素
label = tk.Label(frame, text="Hello, World!")
label.pack()
root.mainloop()
在这个示例中,首先创建了一个Tkinter窗口,并设置了其尺寸为400x400。然后创建了一个画布,并使用pack()
方法将其填充整个窗口。
接下来,定义了一个update_canvas_position()
函数来更新画布的位置。这个函数会在画布的尺寸发生变化时被调用。在函数内部,通过调用xview_moveto()
和yview_moveto()
方法将画布的原点移动到中心位置。
然后,创建了一个框架并使用create_window()
方法将其放置在画布的原点位置。最后,在框架上添加了一个标签元素。
当运行这个代码时,无论窗口的尺寸如何变化,画布的原点始终保持在中心位置。