Python 如何在事件处理程序中访问外部对象?

Python 如何在事件处理程序中访问外部对象?,python,user-interface,events,tkinter,handler,Python,User Interface,Events,Tkinter,Handler,正如标题所说,我正在Tkinter中的运动触发事件处理程序中获取光标位置 我想用位置更新现有的标签小部件。但是,我一辈子都不知道如何在事件处理程序中编辑标签文本字段(或任何外部对象)。据我所知,event是传递给处理程序的唯一参数,这意味着我不能传递label对象 如何访问处理程序之外的对象?Tkinter不会在事件处理程序中传递对象,无论如何,它如何知道您感兴趣的对象 相反,您的责任是从事件处理程序访问您希望更新的对象,例如,您的事件处理程序可以是简单函数,也可以访问全局对象,也可以是对象的方

正如标题所说,我正在Tkinter中的运动触发事件处理程序中获取光标位置

我想用位置更新现有的标签小部件。但是,我一辈子都不知道如何在事件处理程序中编辑
标签
文本字段(或任何外部对象)。据我所知,event是传递给处理程序的唯一参数,这意味着我不能传递label对象


如何访问处理程序之外的对象?

Tkinter不会在事件处理程序中传递对象,无论如何,它如何知道您感兴趣的对象

相反,您的责任是从事件处理程序访问您希望更新的对象,例如,您的事件处理程序可以是简单函数,也可以访问全局对象,也可以是对象的方法,并且可以通过self访问该对象

下面是一种使用全局对象的方法

from Tkinter import *

root = Tk()
frame = Frame(root)
frame.configure(width=300,height=300)

def onmotion(event):
    root.title("Mouse at %s,%s"%(event.x, event.y))

frame.bind("<Motion>", onmotion)
frame.pack()
root.title("Event test")
root.mainloop()
从Tkinter导入*
root=Tk()
帧=帧(根)
框架.配置(宽度=300,高度=300)
def onmotion(事件):
root.title(“鼠标位于%s,%s”%(event.x,event.y))
frame.bind(“”,onmotion)
frame.pack()
root.title(“事件测试”)
root.mainloop()
同样的事情也可以用面向对象的方式来完成

from Tkinter import *

class MyFrame(Frame):
    def __init__(self, root):
        Frame.__init__(self, root)
        self.parent = root
        self.configure(width=300,height=300)
        self.pack()
        self.bind("<Motion>", self.onmotion)

    def onmotion(self, event):
        self.parent.title("Mouse at %s,%s"%(event.x, event.y))

root = Tk()
frame = MyFrame(root)
root.title("Event test")
root.mainloop()
从Tkinter导入*
类MyFrame(框架):
定义初始化(自,根):
帧.\uuuu init\uuuuu(self,root)
self.parent=root
自我配置(宽度=300,高度=300)
self.pack()
self.bind(“,self.onmotion)
def onmotion(自身、事件):
self.parent.title(“鼠标位于%s,%s”%(event.x,event.y))
root=Tk()
frame=MyFrame(根)
root.title(“事件测试”)
root.mainloop()