code: def _check_events(tk):
      
  
      used = False
      try:
          # Process all enqueued events, then exit.
          while True:
              try:
                  # Get an event request from the queue.
                  method, args, kwargs, response_queue = tk.tk._event_queue.get_nowait()
              except queue.Empty:
                  # No more events to process.
                  break
              else:
                  # Call the event with the given arguments, and then return
                  # the result back to the caller via the response queue.
                  used = True
                  if tk.tk._debug >= 2:
                      print('Calling event from main thread:', method.__name__, args, kwargs)
                  try:
                      response_queue.put((False, method(*args, **kwargs)))
                  except SystemExit:
                      raise  # Raises original SystemExit
                  except Exception:
                      # Calling the event caused an exception; return the
                      # exception back to the caller so that it can be raised
                      # in the caller's thread.
                      from sys import exc_info  # Python 2 requirement
                      ex_type, ex_value, ex_tb = exc_info()
                      response_queue.put((True, (ex_type, ex_value, ex_tb)))
      finally:
          # Schedule to check again. If we just processed an event, check
          # immediately; if we didn't, check later.
          if used:
              tk.after_idle(_check_events, tk)
          else:
              tk.after(tk.tk._check_period, _check_events, tk)
docs: Checks events in the queue on a given Tk instance