2010-07-20 52 views

回答

5

一般來說,因爲它給你作爲傳入的事件對象的一部分,你應該永遠都不需要「搞定」這些信息。響應事件時,您可能只需要這些信息,以及事件給你此信息。

放更簡潔,讓你只需要從事件對象檢索信息。

下面是一個例子:

import Tkinter 

class App: 
    def __init__(self, root): 
     f = Tkinter.Frame(width=100, height=100, background="bisque") 
     f.pack(padx=100, pady=100) 
     f.bind("<1>", self.OnMouseDown) 

    def OnMouseDown(self, event): 
     print "frame coordinates: %s/%s" % (event.x, event.y) 
     print "root coordinates: %s/%s" % (event.x_root, event.y_root) 

root=Tkinter.Tk() 
app = App(root) 
root.mainloop() 
+2

我不同意,你應該不一般需要這些信息。我正在寫一個快速的應用程序來做照片編輯......我絕對需要鼠標點擊的相對位置而不是絕對位置,因爲它是相對於顯示圖像的位置,而不是相對於屏幕,這很重要。我相信你的立場往往是正確的,但相對立場有合法用途,有很多合法用途。 – sunny 2015-09-02 19:46:04

+0

@sunny:但是你不是隻在處理事件時需要這些信息嗎?這些信息絕對有用,只是因爲它在事件處理程序中對您很重要,所以您通常不需要獲取它。 – 2015-09-02 20:09:38

+0

是的,所以我們同意這些信息是有用的?我以爲你說這不是有用的信息。 – sunny 2015-09-02 20:28:51

2

獲取鼠標移動事件的屏幕座標(x/y_root)並減去窗口的屏幕座標(window.winfo_rootx()/y())。

相關問題