Python 在父级加载模块以防止覆盖问题

Python Load module in parent to prevent overwrite problems

我正在使用 Python 构建 QGIS 插件并为其设计了一个 GUI。我可以用 pyuic4 编译它,但在加载时会出错。我发现我可以通过在编译的 Python 代码中添加以下行来防止该错误。只有在某些时候我必须重新编译,所以文件被覆盖并且该行丢失。

form.py

from qgis.gui import QgsMapLayerComboBox

我有一个 'parent' 文件,它像这样导入编译后的版本:

dialog.py

from form import Ui_Dialog

有什么方法可以在 dialog.py 中导入 QgsMapLayerComboBox,这样我在重新编译 GUI 后就不必每次都将它添加到 form.py 了吗?

编辑:

<widget class="QgsMapLayerComboBox" name="mMapLayerComboBox">
 <property name="geometry">
  <rect>
   <x>100</x>
   <y>18</y>
   <width>160</width>
   <height>22</height>
  </rect>
 </property>
 <property name="filters">
  <set>QgsMapLayerProxyModel::RasterLayer</set>
 </property>
</widget>
</widget>
<customwidgets>
<customwidget>
 <class>QgsMapLayerComboBox</class>
 <extends>QComboBox</extends>
 <header>qgsmaplayercombobox.h</header>
</customwidget>
</customwidgets>

用一些文本编辑器打开你的 form.ui 并替换:

<customwidget>
 <class>QgsMapLayerComboBox</class>
 <extends>QComboBox</extends>
 <header>qgsmaplayercombobox.h</header>
</customwidget>

<customwidget>
 <class>QgsMapLayerComboBox</class>
 <extends>QComboBox</extends>
 <header>qgis.gui</header>
</customwidget>

再次编译。