title: PyQt5: calling widget slots safely from a worker thread
body: <p>How to call widget slots from QThread worker?
  I know I could create a signal for each widget's slot like this:</p>
  <pre><code>class App(QtWidgets.QMainWindow):
      signal_line_edit_1_setText = pyqtSignal(str)
      signal_line_edit_2_setText = pyqtSignal(str)
      ...
  
      def __init__(self):
          ...
          self.signal_line_edit_1_setText.connect(self.line_edit_1.setText)
          self.signal_line_edit_2_setText.connect(self.line_edit_2.setText)
          self.worker = Worker(self)
  
  
  class Worker(QThread):
      #  Maybe I have to create signals for Worker class and then connect them to app's signals,
      #  but that would be even more complicated
  
      def __init__(self, app):
          self.app = app
          ...
      def run(self):
          self.app.signal_line_edit_1_setText.emit('Worker Running')
          ...
  </code></pre>
  <p>Isn't there a more simple way to thread-safely interact with widgets?
  QTimer works without signal wrapping, but it makes UI just a little laggy.
  I know about QThreadPool, but don't really understand it.</p>