如何在 python tkinter 中将原点更改为 canvas 的中心
how to change the origin to center of the canvas in python tkinter
下面是在 canvas 上绘制坐标轴的函数
在这里我无法理解 canvas1.configure(scrollregion=(-x_origin, -y_origin, x_origin, y_origin))
scrollregion 如何工作的声明。
def draw_axes(canvas1):
canvas1.update()
x_origin = canvas1.winfo_width() / 2
y_origin = canvas1.winfo_height() / 2
canvas1.configure(scrollregion=(-x_origin, -y_origin, x_origin, y_origin))
canvas1.create_line(-x_origin, 0, x_origin, 0, fill='black')
canvas1.create_line(0, -y_origin, 0, y_origin, fill='black')
根据我的说法,它应该是 +x_origin 而不是 -x_origin 因为它在 +ve X 方向移动
但是当我尝试我的逻辑时,我无法得到我想要的输出
scrollregion
与出处无关。它所做的只是影响可以滚动到视图中的虚拟 canvas 区域。当然,您可以滚动 canvas 使 0,0 出现在中心或右下角或其他任何位置,但 x 坐标仍会向右移动,y 坐标仍会向下而不是向上。
设置 scrollregion
也不会导致任何内容滚动。要发生滚动,您必须调用 xview
and/or yview
方法在可滚动区域内滚动。
scrollregion
的前两个坐标必须定义可滚动区域的左上角,后两个坐标表示右下角坐标。如果将它们反转,则行为有些不确定。
这是 scrollregion
的官方文档:
Specifies a list with four coordinates describing the left, top, right, and bottom coordinates of a rectangular region. This region is used for scrolling purposes and is considered to be the boundary of the information in the canvas.
下面是如何让 0,0 出现在 canvas 中心的示例:
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=400, background="black")
canvas.pack(fill="both", expand=True)
canvas.create_oval(-5,-5,5,5, fill="red")
canvas.configure(scrollregion=(-200,-200, 200, 200))
canvas.xview_moveto(.5)
canvas.yview_moveto(.5)
root.mainloop()
下面是在 canvas 上绘制坐标轴的函数
在这里我无法理解 canvas1.configure(scrollregion=(-x_origin, -y_origin, x_origin, y_origin))
scrollregion 如何工作的声明。
def draw_axes(canvas1):
canvas1.update()
x_origin = canvas1.winfo_width() / 2
y_origin = canvas1.winfo_height() / 2
canvas1.configure(scrollregion=(-x_origin, -y_origin, x_origin, y_origin))
canvas1.create_line(-x_origin, 0, x_origin, 0, fill='black')
canvas1.create_line(0, -y_origin, 0, y_origin, fill='black')
根据我的说法,它应该是 +x_origin 而不是 -x_origin 因为它在 +ve X 方向移动 但是当我尝试我的逻辑时,我无法得到我想要的输出
scrollregion
与出处无关。它所做的只是影响可以滚动到视图中的虚拟 canvas 区域。当然,您可以滚动 canvas 使 0,0 出现在中心或右下角或其他任何位置,但 x 坐标仍会向右移动,y 坐标仍会向下而不是向上。
设置 scrollregion
也不会导致任何内容滚动。要发生滚动,您必须调用 xview
and/or yview
方法在可滚动区域内滚动。
scrollregion
的前两个坐标必须定义可滚动区域的左上角,后两个坐标表示右下角坐标。如果将它们反转,则行为有些不确定。
这是 scrollregion
的官方文档:
Specifies a list with four coordinates describing the left, top, right, and bottom coordinates of a rectangular region. This region is used for scrolling purposes and is considered to be the boundary of the information in the canvas.
下面是如何让 0,0 出现在 canvas 中心的示例:
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=400, background="black")
canvas.pack(fill="both", expand=True)
canvas.create_oval(-5,-5,5,5, fill="red")
canvas.configure(scrollregion=(-200,-200, 200, 200))
canvas.xview_moveto(.5)
canvas.yview_moveto(.5)
root.mainloop()