class MyWidget(DisplayWidget):
    def __init__(self, parent=None):
        super(MyWidget, self).__init__(parent)
        self._executor = ProcessPoolExecutor(max_workers=4)

    def _button_clicked(self):
        future = self._executor.submit(download_data)
        future.add_done_callback(self._populate_textarea)

    def _populate_textarea(self, future):
        self._textarea.setPlainText(future.result())