code: def Read(self, timeout=None):
          '''
          Reads the context menu
          :param timeout: Optional.  Any value other than None indicates a non-blocking read
          :return:
          '''
          if not self.Shown:
              self.Shown = True
              self.TrayIcon.show()
          if timeout is None:
              self.App.exec_()
          elif timeout == 0:
              self.App.processEvents()
          else:
              self.timer = start_systray_read_timer(self, timeout)
              self.App.exec_()
  
              if self.timer:
                  stop_timer(self.timer)
  
          item = self.MenuItemChosen
          self.MenuItemChosen = TIMEOUT_KEY
          return itef Read(self, timeout=None):
          '''
          Reads the context menu
          :param timeout: Optional.  Any value other than None indicates a non-blocking read
          :return:
          '''
          if not self.Shown:
              self.Shown = True
              self.TrayIcon.show()
          if timeout is None:
              self.App.exec_()
          elif timeout == 0:
              self.App.processEvents()
          else:
              self.timer = start_systray_read_timer(self, timeout)
              self.App.exec_()
  
              if self.timer:
                  stop_timer(self.timer)
  
          item = self.MenuItemChosen
          self.MenuItemChosen = TIMEOUT_KEY
          return item
docs: Reads the context menu
          :param timeout: Optional.  Any value other than None indicates a non-blocking read
          :return: