Python Tkinter坐标从3开始?

Python Tkinter坐标从3开始?,python,tkinter,Python,Tkinter,我有以下代码: 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() 这将在左上角画一条线。为什么如果我将线坐标更改为(2,2,2,100),线就不会渲染?这就像坐标系从

我有以下代码:

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()

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

坐标系可能从左上角开始,包括操作系统的标题栏和边框,因此必须向右和向下渲染


这通常与操作系统有关。

画布坐标明确地从零开始,而窗口框架与您的问题无关

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


不幸的是,borderwidth和highlightthickness都会占用画布的坐标系

有没有办法让tkinter根据需要自动转换坐标?或者我至少可以自己通过编程确定偏移量是多少来进行翻译吗?我不确定,因为它是操作系统特有的,但是如果您知道您只在一个操作系统上使用该程序,您可以始终创建自己的函数。这个答案完全错误。是的,您是对的。将highlightthickness设置为0修复了该问题。谢谢