2010-09-30 82 views
3

我有以下代码:Tkinter坐标从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)。

回答

3

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

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

不幸的是,边框宽度和高光厚度都会侵入画布的坐标系。

+0

是的,你是对的。将highlightthickness设置为0可以解决问题。谢谢! – ysimonson 2010-10-01 23:01:50

0

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

它通常是一个操作系统依赖的东西。

+0

有没有一种方法可以让tkinter根据需要自动翻译坐标?或者我可以至少确定自己编写的偏移量是如何编译的? – ysimonson 2010-09-30 23:55:32

+0

不知道这一点,因为它是特定于操作系统的,但如果您知道只打算在一个操作系统上使用该程序,则始终可以创建自己的功能。 – oadams 2010-09-30 23:59:31

+1

这个答案是完全错误的。 – 2010-10-01 14:18:06