首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQGIS -能在Qt设计中推广我自己的课程吗?

PyQGIS -能在Qt设计中推广我自己的课程吗?
EN

Stack Overflow用户
提问于 2022-07-19 07:00:06
回答 1查看 112关注 0票数 0

当我开发QGIS插件时,我在Qt中推广类时遇到了一些问题。

我使用插件生成器创建插件,然后将结构重新组织如下:

结构

所以现在,当我将Qt设计器中的ComboBox提升到src文件夹中的combobox时。在QGIS中,我得到了错误信息。

代码语言:javascript
复制
2022-07-19T08:22:24     CRITICAL    Traceback (most recent call last):
          File "C:\PROGRA~1/QGIS32~1.2/apps/qgis/./python\qgis\utils.py", line 423, in _startPlugin
          plugins[packageName] = package.classFactory(iface)
          File "C:\Users/blank/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\test\__init__.py", line 35, in classFactory
          from .test import test
          File "C:\PROGRA~1/QGIS32~1.2/apps/qgis/./python\qgis\utils.py", line 888, in _import
          mod = _builtin_import(name, globals, locals, fromlist, level)
          File "C:\Users/blank/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\test\test.py", line 31, in 
          from .test_dockwidget import testDockWidget
          File "C:\PROGRA~1/QGIS32~1.2/apps/qgis/./python\qgis\utils.py", line 888, in _import
          mod = _builtin_import(name, globals, locals, fromlist, level)
          File "C:\Users/blank/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\test\test_dockwidget.py", line 30, in 
          FORM_CLASS, _ = uic.loadUiType(os.path.join(
          File "C:\PROGRA~1/QGIS32~1.2/apps/qgis/./python\qgis\PyQt\uic\__init__.py", line 36, in __loadUiType
          return __PyQtLoadUiType(*args, **kwargs)
          File "C:\PROGRA~1\QGIS32~1.2\apps\Python39\lib\site-packages\PyQt5\uic\__init__.py", line 204, in loadUiType
          exec(code_string.getvalue(), ui_globals)
          File "", line 29, in 
          File "C:\PROGRA~1/QGIS32~1.2/apps/qgis/./python\qgis\utils.py", line 888, in _import
          mod = _builtin_import(name, globals, locals, fromlist, level)
         ModuleNotFoundError: No module named 'src'

我在Qt Designer中提升的小部件如下所示:

Qt提升Widget

也许有人知道怎么写代码来修复呢?有可能吗?我想提一下,当我在QGIS之外开发一些程序时,我还没有遇到这个问题。

这是QGIS插件的源代码。

test_dockwidget.py

代码语言:javascript
复制
import os

from qgis.PyQt import QtGui, QtWidgets, uic
from qgis.PyQt.QtCore import pyqtSignal

FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), r'ui\test_dockwidget_base.ui'))


class testDockWidget(QtWidgets.QDockWidget, FORM_CLASS):

closingPlugin = pyqtSignal()

    def __init__(self, parent=None):
        """Constructor."""
        super(testDockWidget, self).__init__(parent)
        # Set up the user interface from Designer.
        # After setupUI you can access any designer object by doing
        # self.<objectname>, and you can use autoconnect slots - see
        # http://doc.qt.io/qt-5/designer-using-a-ui-file.html
        # #widgets-and-dialogs-with-auto-connect
        self.setupUi(self)

    def closeEvent(self, event):
        self.closingPlugin.emit()
        event.accept()

combobox.py

代码语言:javascript
复制
from PyQt5.QtWidgets import QComboBox

class Combobox(QComboBox):
    def __init__(self, parent):
        super().__init__()
        self.setParent(parent)
        self.currentIndexChanged.connect(self.color)

    def color(self):
        print(self.sender(), self.currentIndex())

当然还有test.py文件,但是它太长了,它是由插件生成器创建的,所以我不把它粘贴在这里。

EN

回答 1

Stack Overflow用户

发布于 2022-08-17 14:33:20

没有经过测试,但我要说,在src目录中创建一个空文件src将解决src无法将src识别为模块的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73032452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档