AppCenter/
main.pyw
|
|
_apps/
__init__.py
TabularApp.py
UserAdministrationApp.py
RegisterApp.py
FnAdminApp.py
PyUi/
__init__.py
的内容:import sys
sys.path.insert(1, '.')
__all__ = ['TabularApp',
'UserAdministrationApp',
'RegisterApp',
'FnAdminApp']
当main.pyw尝试from _apps import *
时。
在UserAdministrationApp.py
中,我尝试向某些QListWidget
项动态添加工具提示,如下所示:
for app in self.__APPS__:
app_icon = str(os.path.join(app_icons, f"{app}.png")).replace('\\', '/')
icon = QIcon(app_icon)
if app != self.__class__:
ttip_txt = eval(f'_apps.{app}.__doc__')
else:
ttip_txt = self.__doc__
item = QListWidgetItem(icon, app)
item.setText(app)
item.setToolTip(ttip_txt)
wdg.addItem(item)
self.__APPS__
只是_apps.__all__
的一个副本。
我遇到的第一个问题是,我会在ttip_txt = eval(f'_apps.{app}.__doc__')
中得到一个AttributeError
说module x has no attribute y
,我通过UserAdministrationApp模块中的from _apps import *
解决了这个问题。在这一点上,我已经为测试目的重命名了这个模块,并且一切正常,但是当我将名称改回UserAdministrationApp.py
时,我得到了另一个AttributeError
的名称module __apps has no attribute UserAdministrationApp
我试着阅读python导入文档,但其中没有任何东西真正对我有用。 我感觉到这与试图导入自己的脚本有关。 但我仍然对这些问题感兴趣:
import _apps
时导入失败了李>ImportError
而不是AtributeError
李>
好吧,我找到了一个解决方案,虽然我觉得它有点脏,不是最好的风格,但它是有效的
首先
删除
from _apps import *
,只删除from _apps import __all__
然后
在初始化主类时,从模块
UserAdministrationApp
import
在循环中跳过self.__class_.__name__
最后
在找到解决办法之后,我仍然想听听为什么这个错误首先是出于教育目的。 所以,如果任何人在任何时候看了这一点,并知道如何…你是非常欢迎的
相关问题 更多 >
编程相关推荐