Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获取tkinter中相对于父窗口小部件的鼠标位置?_Python_Tkinter_Mouse Position - Fatal编程技术网

Python 如何获取tkinter中相对于父窗口小部件的鼠标位置?

Python 如何获取tkinter中相对于父窗口小部件的鼠标位置?,python,tkinter,mouse-position,Python,Tkinter,Mouse Position,我需要得到鼠标相对于tkinter窗口的位置 获取鼠标移动事件的屏幕坐标(x/y\u root)并减去窗口的屏幕坐标(window.winfo\u rootx()/y())。一般来说,您不需要“获取”此信息,因为它是作为传入的事件对象的一部分提供给您的。您可能只在响应事件时需要此信息,而事件会提供此信息 简而言之,要获取信息,只需从事件对象检索信息 下面是一个例子: import Tkinter class App: def __init__(self, root):

我需要得到鼠标相对于tkinter窗口的位置

获取鼠标移动事件的屏幕坐标(
x
/
y\u root
)并减去窗口的屏幕坐标(
window.winfo\u rootx()
/
y()
)。

一般来说,您不需要“获取”此信息,因为它是作为传入的事件对象的一部分提供给您的。您可能只在响应事件时需要此信息,而事件会提供此信息

简而言之,要获取信息,只需从事件对象检索信息

下面是一个例子:

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()
导入Tkinter
类应用程序:
定义初始化(自,根):
f=Tkinter.Frame(宽度=100,高度=100,背景=“bisque”)
f、 包装(padx=100,pady=100)
f、 绑定(“,self.OnMouseDown)
def OnMouseDown(自身、事件):
打印“帧坐标:%s/%s”%(event.x,event.y)
打印“根坐标:%s/%s”%(event.x\u root,event.y\u root)
root=Tkinter.Tk()
app=app(根目录)
root.mainloop()

我不同意您通常不需要这些信息。我现在正在写一个快速应用程序来编辑照片…我绝对需要鼠标点击的相对位置,而不是绝对位置,因为它的位置相对于显示的图像,而不是相对于屏幕,这很重要。我确信你的位置通常是正确的,但是相对位置有合法的用途,有很多合法的用途。@sunny:但你不是只在处理事件时才需要这些信息吗?这些信息绝对有用,只是你通常不需要获取它,因为它是在事件处理程序中提供给你的。是的,所以我们同意这些信息是有用的?我以为你说这不是有用的信息。@sunny:我从来没有说过你不需要这些信息,我说你不需要得到这些信息。这些信息确实很有用,但它是传入的事件对象的一部分,因此您不需要查询tkinter以获取信息,因为您已经拥有了这些信息。您是对的。我错过了你所说的细微差别。