Blender を使用して QML エンジンを実行すると、例外エラーが発生する
self.load(os.fspath(Path(__file__).resolve().parent / "qml/main.qml"))
メインの Blender スレッドと通信しながら、別のスレッドでコードを実行する必要があります。Blenderがその領域にアクセスできないようにするスレッド化を試みました。
class QtWindowEventLoop(bpy.types.Operator):
"""Allows PyQt or PySide to run inside Blender"""
bl_idname = 'screen.qt_event_loop'
bl_label = 'Qt Event Loop'
def __init__(self, widget, *args, **kwargs):
self._widget = widget
self._args = args
self._kwargs = kwargs
def modal(self, context, event):
# bpy.context.window_manager
wm = context.window_manager
#if not self.widget:
# # if widget is closed
# logger.debug('finish modal operator')
# wm.event_timer_remove(self._timer)
# return {'FINISHED'}
#else:
logger.debug('process the events for Qt window')
self.event_loop.processEvents()
self.app.sendPostedEvents(None, 0)
return {'PASS_THROUGH'}
def execute(self, context):
logger.debug('execute operator')
self.app = QtGui.QGuiApplication.instance()
if not self.app:
# create the first instance
self.app = QtGui.QGuiApplication(sys.argv)
self.event_loop = QtCore.QEventLoop()
self.widget = self._widget(*self._args, **self._kwargs)
wm = context.window_manager
self._timer = wm.event_timer_add(1 / 120, window=context.window)
context.window_manager.modal_handler_add(self)
return {'RUNNING_MODAL'}
私を助けて、何ができるのか、何が間違っているのか教えてください