docs: def useQt(qtLib: str = 'PyQt5', period: float = 0.01):
      """
      Run combined Qt5/asyncio event loop.
  
      Args:
          qtLib: Name of Qt library to use, can be 'PyQt5' or 'PySide2'.
          period: Period in seconds to poll Qt.
      """
      def qt_step():
          loop.call_later(period, qt_step)
          if not stack:
              qloop = QEventLoop()
              timer = QTimer()
              timer.timeout.connect(qloop.quit)
              stack.append((qloop, timer))
          qloop, timer = stack.pop()
          timer.start(0)
          qloop.exec_()
          timer.stop()
          stack.append((qloop, timer))
  
      if qtLib not in ('PyQt5', 'PySide2'):
          raise RuntimeError(f'Unknown Qt library: {qtLib}')
      if qtLib == 'PyQt5':
          from PyQt5.Qt import QApplication, QTimer, QEventLoop
      else:
          from PySide2.QtWidgets import QApplication
          from PySide2.QtCore import QTimer, QEventLoop
      global qApp
      qApp = QApplication.instance() or QApplication(sys.argv)
      loop = asyncio.get_event_loop()
      stack: list = []
      qt_step()