Tkinter的坐标从3开始吗?

3
我有以下的代码:
from Tkinter import *

master = Tk()
canvas = Canvas(master, width=640, height=480, bd=0)
canvas.pack()

line_coords = (3, 3, 3, 100)
canvas.create_line(*line_coords, fill='red')

mainloop()

这将在左上角画一条线。如果我将line_coords更改为(2, 2, 2, 100),为什么该线不会渲染?好像坐标系从(3, 3)开始。

2个回答

3
< p > 画布坐标从零开始,窗口框架与您的问题无关。

问题在于您系统上画布的默认highlightthickness为3,这就是遮挡您线条的原因。尝试将highlightthickness设置为0,即使x坐标为0,您也会看到您的线条。

不幸的是,边界宽度和highlightthickness都侵犯了画布的坐标系。


是的,你说得对。将highlightthickness设置为0解决了问题。谢谢! - ysimonson

0

坐标系统可能从左上角开始,包括操作系统的标题栏和边框,因此您需要向右和向下渲染一点。

这通常是与操作系统有关的东西。


有没有办法让tkinter根据需要自动转换坐标?或者我能否编程确定偏移量以便自己进行转换? - ysimonson
不确定这个问题,因为它是特定于操作系统的,但如果你知道你只会在一个操作系统上使用该程序,你总可以自己编写函数。 - oadams
1
这个答案完全是错误的。 - Bryan Oakley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接