2010-09-30 75 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