from Tkinter import * class ScrolledCanvas(Frame): def __init__(self, parent=None, color='brown'): Frame.__init__(self, parent) self.pack(expand=YES, fill=BOTH) # make me expandable canv = Canvas(self, bg=color, relief=SUNKEN) canv.config(width=300, height=200) # display area size canv.config(scrollregion=(0,0,300, 1000)) # canvas size corners canv.config(highlightthickness=0) # no pixels to border sbar = Scrollbar(self) sbar.config(command=canv.yview) # xlink sbar and canv canv.config(yscrollcommand=sbar.set) # move one moves other sbar.pack(side=RIGHT, fill=Y) # pack first=clip last canv.pack(side=LEFT, expand=YES, fill=BOTH) # canv clipped first for i in range(10): canv.create_text(150, 50+(i*100), text='spam'+str(i), fill='beige') canv.bind('', self.onDoubleClick) # set event handler self.canvas = canv def onDoubleClick(self, event): print event.x, event.y print self.canvas.canvasx(event.x), self.canvas.canvasy(event.y) if __name__ == '__main__': ScrolledCanvas().mainloop()