4
有沒有辦法將畫布座標轉換爲Tkinter中的窗口座標?預先Python Tkinter將畫布座標轉換爲窗口座標
x = canvas.canvasx(event.x)
感謝:
這將是從窗口轉換爲畫布座標的相反,至極像這樣做。
有沒有辦法將畫布座標轉換爲Tkinter中的窗口座標?預先Python Tkinter將畫布座標轉換爲窗口座標
x = canvas.canvasx(event.x)
感謝:
這將是從窗口轉換爲畫布座標的相反,至極像這樣做。
使用canvasx
和canvasy
方法,給出一個零參數來計算可見畫布左上角的x/y。然後,只需使用數學將畫布座標轉換爲與窗口相關的內容即可。
# upper left corner of the visible region
x0 = self.canvas.canvasx(0)
y0 = self.canvas.canvasy(0)
# given a canvas coordinate cx/cy, convert it to window coordinates:
wx0 = cx-x0
wy0 = cy-y0
例如,如果在畫布上滾動一路頂部和左側,x0和y0將爲零。您給出的任何畫布座標都將與窗口座標相同(即:畫布0,0的x/y將對應於窗口座標0,0)。
如果向下向右滾動100個像素,則100,100的畫布座標將轉換爲0,0的窗口座標,因爲那是位於窗口左上角的像素。
這給你一個相對於畫布左上角的值。如果您需要此相對於整個窗口的左上角,請使用winfo_x
和winfo_y
來獲取畫布相對於窗口的座標並進行更多的數學計算。或者,使用winfo_rootx
和winfo_rooty
來獲取小部件相對於屏幕的座標。
我不知道我是否不明白答案,或者如果我沒有說清楚。我想要一種方法來了解畫布內部的座標(例如,畫布圖像項),但是以窗口座標的形式,因爲我的畫布是可滾動的。 –
@Marcos:我的不好。我沒有完全理解你所問的問題而匆忙地回答。希望我現在給出了更好的答案。 –