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>
再次编译。
我正在使用 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>
再次编译。