修复循环导入

时间:2014-12-23 12:57:39

标签: python pyside

我有一个项目(使用PySide和sqlalchemy),具有以下项目结构

bin/
|-- db/     // sqlalchemy mapping to mysql tables
|
|-- model/  // custom TableModels (inherited from QAbstractTableModel)
|
|-- ui/     // ui files created by Qt Designer and the generated python files
|   
|-- view/   // custom TableViews (inherited from QTableView)
|   
|-- widget/ //custom widgets (inherited from QWidget)

我的问题在我创建自定义tableViews时开始。简化它,我有一个CustomerWidget和一个OrderWidget,每个都使用TableView分别显示客户和订单。我制作了一些自定义视图,以便从customerTableView中右键单击并启动包含所有客户订单的orderWidget。相反,您可以在orderWidget中右键单击它,然后从该订单中向客户启动customerWidget。

这导致导入问题,因为customerWidget导入了导入oderWidget的customerView,导入了导入customerWidget的orderView。 (实际上我有一堆小部件可以互相启动)。

我使用from ... import语法导入。我实际上通过使用常规导入“解决”了这一点。

我想知道是否有另一种更“优雅”的解决方法,因为现在我的代码充满了像

这样的东西
self._model = bin.model.customerTableModel.CustomerTableModel(args)

我真的很想把它作为

self._model = CustomerTableModel(args)

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

from bin.model import CustomerTableModel
self._model = CustomerTableModel(args)

from bin.model import *
self._model = CustomerTableModel(args)

import bin.model as bm
CustomerTableModel = bm.CustomerTableModel
self._model = CustomerTableModel(args)