'qtconsole no event loop in thread
I'm using qtconsole and want to move the code into it's own thread
import sys
from PySide6.QtCore import QThread
from qtconsole.rich_jupyter_widget import RichJupyterWidget
from qtconsole.inprocess import QtInProcessKernelManager
from PySide6.QtWidgets import QApplication
class Runner(RichJupyterWidget, QThread):
def __init__(self):
super().__init__()
kernel_manager = QtInProcessKernelManager(kernel_name='python3')
kernel_manager.start_kernel()
kernel_client = kernel_manager.client()
kernel_client.start_channels()
self.kernel = kernel_manager.kernel
self.kernel_manager = kernel_manager
self.kernel_client = kernel_client
def run(self):
self.execute("""a = 1/0""")
ret = self.kernel.shell.user_ns
print(ret)
app = QApplication(sys.argv)
test = Runner()
test.start()
sys.exit(app.exec())
However, that throws the below exception
Traceback (most recent call last):
File "/tmp/test/test.py", line 67, in run
self.execute("""a = 1/0""")
File "/tmp/test/.venv/lib/python3.10/site-packages/qtconsole/console_widget.py", line 660, in execute
self.do_execute(source, True, '')
File "/tmp/test/.venv/lib/python3.10/site-packages/qtconsole/history_console_widget.py", line 42, in do_execute
super().do_execute(source, complete, indent)
File "/tmp/test/.venv/lib/python3.10/site-packages/qtconsole/console_widget.py", line 670, in do_execute
self._execute(source, False)
File "/tmp/test/.venv/lib/python3.10/site-packages/qtconsole/frontend_widget.py", line 285, in _execute
msg_id = self.kernel_client.execute(source, hidden)
File "/tmp/test/.venv/lib/python3.10/site-packages/ipykernel/inprocess/client.py", line 114, in execute
self._dispatch_to_kernel(msg)
File "/tmp/test/.venv/lib/python3.10/site-packages/ipykernel/inprocess/client.py", line 182, in _dispatch_to_kernel
loop = asyncio.get_event_loop()
File "/usr/lib/python3.10/asyncio/events.py", line 656, in get_event_loop
raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'Dummy-2'.
Is there a way to get the RichJupyterWidget to work inside its own thread?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
