VSCode\PyCharm23.2+PyQGIS插件开发配置相关要点

news/2024/7/16 8:34:43 标签: vscode, pycharm, ide

近期利用VSCode\PyCharm+PyQGIS进行插件开发,现将要点总结一下:

一、VSCode,我没有配置成功,主要是最后一个阶段调试的时候老是不成功。以后会持续关注。但是有几个要点:

1、VSCode+PyQIS开发,智能提示的设置,见下面的文章。网上找不到相关的文章的。

写文章-CSDN创作中心

2、配置文件:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Remote Attach",
            "port": 5678,
            "host": "localhost",
            "request": "attach",
            "type": "python",
            //"processId": "${command:pickProcess}",
            "pathMappings": [
                {
                    "localRoot": "${workspaceFolder}", // path to your plugin where you are developing
                    "remoteRoot": "C:\\Users\\...\\AppData\\Roaming\\QGIS\\QGIS3\\profiles\\default\\python\\plugins\\your_plugin" // path to where the QGIS plugin folder lives 
                }
            ]
        }
    ]
}

我觉得我应该是pathmappings这里设置的问题。

VSCode要启动一会(大概是加载插件的缘故吧),智能提示才能开始启效果。

二、PyCharm,我配置成功了,要注意一下顺序:

1、QGIS中要安装的插件:plugin reloader、plugin builder

2、QGIS中插件的所在目录,建议把工程直接创建在这里:

C:\Users\用户名\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins

3、PyCharm 解释程序配置,如果不是lts版本的qgis,配置上有所不同:

 4、服务配置:

 

3、插件安装:

1)添加包源:

 

应用后再移除,然后刷新,就可以了。一定是应用后再移除,然后刷新。 

2)安装包pydevd-pycharm ,注意版本要与刚才服务的版本对应,这里我安装的是232.8660.197

4、编写代码:

可以用QGIS3.32.1安装时自带的QTDesinger来设计。1)先用plugin builder创建,2)然后用QTDesinger来修改界面。

然后编写代码:

    def run(self):
        """Run method that performs all the real work"""

        # Create the dialog with elements (after translation) and keep reference
        # Only create GUI ONCE in callback, so that it will only load when the plugin is started
        if self.first_start == True:
            self.first_start = False
            self.dlg = MyNameDialog()
            self.dlg.button_box.clicked.connect(self.okclick)

self.dlg.button_box.clicked.connect(self.okclick)这句是给界面上的按键添加方法。

方法这样写:

    def okclick(self):
        pydevd_pycharm.settrace('localhost', port=53100, stdoutToServer=True, stderrToServer=True)
        aa = "cccc"
        print("MyName")

        # 获取当前项目
        project = QgsProject.instance()
        layers = project.mapLayers()

        for layer_id, layer in layers.items():
            print(layer.name())

注意前面需要导入包:

import pydevd_pycharm

from qgis.PyQt.QtCore import Qt
from qgis.PyQt.QtGui import QIcon
from qgis.core import (
    QgsProject,
    QgsVectorLayer,
    QgsMapLayerType,
)
import pydevd_pycharm
pydevd_pycharm.settrace('localhost', port=53100, stdoutToServer=True, stderrToServer=True)
这两句是需要的,这样下能调试,查看变量。

然后打断点,点debugger。

 然后在界面上运行插件:

修改了代码后编译后,一定要运行一下reloader(上图后面的框),然后点击你的插件。

特别注意:

如果仅仅是编辑一段代码,那么直接用qt自带的python编辑器就行。这时好像是不能调试的。

最好的做法是,创建一个python脚本,用编辑器打开,在pycharm编写,然后它会同时同步到qgis的编辑器中。在qgis中运行看效果,这个过程很折磨人哦。

如果要能调试,就必须要按照上面的步骤编写插件。


http://www.niftyadmin.cn/n/4954881.html

相关文章

微信小程序发布上线流程以及个人小程序怎么通过审核

小程序如何发布?微信小程序发布流程其实很简单,本文就介绍下如何发布上线流程以及个人小程序怎么通过审核 小程序在开发完成后,需要上传代码,设为体验版本,提交审核,发布上线这几个基本步骤 微信小程序发…

第9步---MySQL的索引和存储引擎

第9步---MySQL的索引和存储引擎 1.索引 1.1分类 索引可以快速的找出具有特定值的行。不用从头开始进行寻找了。 类别 hash和btree hash 根据字段值生生成一个hash的值 快速的进行定位到对应的行的值 可能会出现相同的值,找到对应的空间会出现对应的值 btree树…

ChatGPT-4: 半年的深度使用思考

几个月的时间一直在使用 ChatGpt-4,以口述语音转文字的形式说一下自己的体会。 1、选择版本 大前提:我使用的都是 GPT4 的版本。也就是说至少每个月要付费20$。 因为 3.5 的版本,实际上使用体验是非常差的,主要体现在答非所问上。…

【【萌新的STM32学习-11】】

萌新的STM32学习-11 终于进入了正点原子的入门篇进行一些简单的设计 GPIO General Purpose Input Output 通用输入输出端口 简称GPIO 作用 :负责采集外部器件的信息或者控制外部器件工作,即输入输出 GPIO 的特点 1,不同型号,IO数…

设计模式——依赖倒转原则

文章目录 基本介绍应用实例依赖关系传递的三种方式和应用案例1, 接口传递,应用案例代码2, 构造方法传递,应用案例代码3, setter 方式传递,应用案例代码 依赖倒转原则的注意事项和细节 基本介绍 依赖倒转原则(Dependence Inversion Principle…

CAPL通过lookupSignal和DBLookup获取DBC信号的属性信息

文章目录 演示CAPL通过lookupSignal和DBLookup获取DBC信号的属性信息lookupSignalDBLookup代码问题:DBLookup(信号名).AttributeName报错问题: motorola格式的信号使用DBLookup获取信号的bitstart跟ig模块里的信息不一样演示 CAPL通过lookupSignal和DBLookup获取DBC信号的属性…

Vue--》打造个性化医疗服务的医院预约系统(七)完结篇

今天开始使用 vue3 + ts 搭建一个医院预约系统的前台页面,因为文章会将项目的每一个地方代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的GithHub上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关…

Verilog中的 条件语句\多路分支语句\循环语句

Verilog中的条件语句\多分支语句\循环语句 文章目录 Verilog中的条件语句\多分支语句\循环语句一、背景二、if-else2.1 标准结构2.2 例子 三、case-endcase3.1 标准结构3.2 例子3.2.1 三路选择器的case部分,如下:3.2.2 casez的四路选择器,如下…