В настоящее время я погружаюсь в Flexx для создания пользовательского интерфейса для моей программы Python.Я начинаю понимать это, но сталкиваюсь с проблемой.
Мне нужно иметь возможность вызывать метод PyComponent
вне области действияApp
.Я понимаю, что app.cls
дает класс, который использовался для создания экземпляра приложения, но это не фактический экземпляр, поэтому я не могу сделать что-то вроде app.cls.my_method(...)
.
Есть ли способ получить экземпляркомпонента внутри оболочки приложения, только зная экземпляр App
?
Спасибо!
РЕДАКТИРОВАТЬ: После просмотра источника я обнаружил, в основном, без документов AppManager
и Session
определений и может получить ссылку на экземпляр компонента с помощью:
from flexx.app import manager
app_instance = manager.get_connections('MyAppName')[0].app
Но если я вызову один из его методов из watchdog.events.FileSystemEventHandler
, экземпляром которого является watchdog
*Библиотека 1030 *, я получаю следующую трассировку:
File "myfile.py", line 37, in on_created
manager.get_connections('MyAppName')[0].app.update_verbose(False)
File "lib\site-packages\flexx\event\_action.py", line 150, in __call__
if loop.can_mutate(ob):
File "lib\site-packages\flexx\event\_loop.py", line 85, in can_mutate
active = self.get_active_component()
File "lib\site-packages\flexx\event\_loop.py", line 103, in get_active_component
if len(self._local._active_components) > 0:
AttributeError: '_thread._local' object has no attribute '_active_components'
Обратите внимание, что update_verbose
- это действие Flexx, которое изменяет свойство.Я подозреваю проблему, когда сторожевой обработчик работает в другом потоке, но я не вижу, что изменить ...