PyQT项目组织

时间:2014-02-17 10:28:31

标签: python pyqt4

我想组织我的PyQT项目,我试图将UI放在子文件夹中并像这样导入它们:

import sys
sys.path.append('UI/gui_sensors')
from gui_sensors_extended import Ui_SensorsWindow_Extended

但它给了我错误,因为找不到 * Ui_SensorsWindow * ,在 * Ui_SensorsWindow_Extended *

中继承的ui-class

那么,你有什么建议来组织我的项目?我怎样才能在代码中处理它?<​​/ p>

2 个答案:

答案 0 :(得分:11)

构建python项目时需要记住一件事:当前运行的脚本的目录会自动添加到sys.path的开头。

因此,如果您将包的<{1}}脚本放在顶层容器目录中,这将保证无论脚本在何处执行,包导入都将始终有效从。为了说明,这是一个简单的项目结构:

main.py

project / main.py package / __init__.py app.py ui / __init__.py mainwindow.py 脚本应该非常小,并且只包含以下内容:

main.py

if __name__ == '__main__': import sys from package import app sys.exit(app.run()) 模块中,gui模块将按如下方式导入:

app

可以在包树中的任何位置使用相同的导入语法。所以如果你添加了另一个这样的子包:

from package.ui.mainwindow import Ui_MainWindow

然后project / main.py package / ... dialogs / __init__.py search.py 模块将导入其gui模块:

search

如果以这种方式组织所有python项目,则永远不需要操作from package.ui.search import Ui_SearchDialog 以使本地导入正常工作。

答案 1 :(得分:0)

您可以使用以下方法填写完整路径:

import sys
import os.path as osp
path = osp.dirname(__file__)
sys.path.append(osp.join(path, 'UI/gui_sensors'))
from gui_sensors_extended import Ui_SensorsWindow_Extended

__file__包含当前模块的路径