For example, I have a Slider with a callback set via on_changed(). I have the option of modifying the Slider value with set_val() without triggering the callback by setting eventson to False before setting the value.
However, if I set eventson to False for the TextBox, then update the value with set_val(), the callback on_submit() still gets triggered.
The source code for my version of Matplotlib verifies this:
For TextBox:
def set_val(self, val):
    newval = str(val)
    if self.text == newval:
        return
    self.text = newval
    self.text_disp.remove()
    self.text_disp = self._make_text_disp(self.text)
    self._rendercursor()
    self._notify_change_observers()
    self._notify_submit_observers()
For Slider:
def set_val(self, val):
    """
    Set slider value to *val*
    Parameters
    ----------
    val : float
    """
    xy = self.poly.xy
    xy[2] = val, 1
    xy[3] = val, 0
    self.poly.xy = xy
    self.valtext.set_text(self.valfmt % val)
    if self.drawon:
        self.ax.figure.canvas.draw_idle()
    self.val = val
    if not self.eventson:
        return
    for cid, func in self.observers.items():
        func(val)
Is there a preferred way to do this?