我目前正在研究Flexx,以便为我的 Python 程序制作 UI。我开始掌握它,但我遇到了一个问题。
我需要能够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
但是,如果我从库实例化的a 中调用它的方法之一watchdog
,我会得到以下回溯:
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 操作。我怀疑看门狗处理程序在不同的线程上运行但我看不到要更改的内容的问题...