"""Add an observer to specific objects in a scene""" from vedo import printc, Mesh, dataurl, Text2D, Plotter import numpy as np # ----------------------- def func(obj, name=None): printc("Plotter callback", c="m") # ----------------------- def ftxt(obj, ename): printc("Text2D callback", obj.__class__.__name__, ename, c="y") obj.color(np.random.rand() * 10) # ----------------------- def fmsh(obj, ename): printc("Mesh callback", obj.__class__.__name__, ename, c="b") msh.color(np.random.rand() * 10) msh = Mesh(dataurl + "spider.ply") cid2 = msh.add_observer("pick", fmsh) txt = Text2D("CLICK ME", pos="bottom-center", s=3, bg="yellow5").pickable() cid1 = txt.add_observer("pick", ftxt) plt = Plotter() # plt.add_observer("mouse click", func) ### SAME AS: # plt.add_callback("mouse click", func, enable_picking=False) plt.show(txt, msh, __doc__).close()