PyQGIS开发 2 Qt开发入门

embedded/2024/9/24 2:55:06/

PyQGIS Qt开发入门

1 使用 Qt Designer

QGIS在安装后已经配套了Qt Designer,可以在开始菜单 -> QGIS -> Qt Designer for QGIS点击运行程序,或者在QGIS安装目录/bin/gis>qgis-designer.bat(或gis>qgis-ltr-designer.bat)点击运行。

选择Main Window模板创建,点击下方的创建后,将创建如下窗口:

添加资源文件:

向资源文件中添加资源:
先添加前缀“ico”,然后添加文件

在属性编辑器中修改窗体图标:

快捷键Ctrl+R预览窗体:

我们通过Main Window模板创建的MainWindow界面已经附带了三个组件,分别是centralwidget(中心组件)、menubar(菜单栏)与statusbar(状态栏):

添加Frame控件,并设置垂直布局:

添加DockWidget并保存为ui文件:

2 PyCharm 加载ui、qrc文件

我们需要将.ui文件和.qrc资源文件都转换为.py文件。pyqt提供了pyuic和pyrcc工具来进行转换,而Pycharm提供了一个外部工具加载方法,打开File -> Settings -> Tools -> External Tools 界面,点击左上角“+”进行配置填写:

  • Name: pyuic
  • Programs: .../QGIS安装路径/bin/python-gis>qgis.bat(或python-gis>qgis-ltr.bat)
  • Argument: -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
  • Working directory: $FileDir$

在PyCharm工程目录中右键“ui”文件 -> External Tools -> pyuic,点击运行后“ui”文件就会转换为py文件

再次打开File | Settings | Tools | External Tools界面添加工具pyrcc:

  • Name: pyrcc
  • Programs: .../QGIS安装路径/bin/python-gis>qgis.bat(或python-gis>qgis-ltr.bat)
  • Argument: -m PyQt5.pyrcc_main $FileName$ -o $FileNameWithoutExtension$_rc.py
  • Working directory: $FileDir$

在PyCharm工程目录中右键“qrc”文件 -> External Tools -> pyuic,点击运行后“qrc”文件就会转换为py文件

将其移到根目录下,并且右键项目,将其设为Source Root

3 运行界面

现在创建了mainWindow.py文件,但为了避免因改动ui文件而影响业务代码,所以不能在创建出来的mianWindow.py上进行代码编写,我们应该继承这个代码里的对象,在继承对象中编写代码,我们在根目录下新建mainWindowImpl.py:

python">from gis>qgis.PyQt.QtWidgets import QMainWindow
from gis>qgis.core import QgsProject
from ui.myWindow import Ui_MainWindow
​
PROJECT = QgsProject.instance()
class MainWindow(QMainWindow, Ui_MainWindow):def __init__(self):super(MainWindow, self).__init__()self.setupUi(self)

在这个新子类中,继承了多个父类,一个是QMainWindow,这个父类表明了这个类的实现是一个主窗口对象;第二个是Ui_MainWindow,就是我们自己转换来的mainWindow.py的类。

在main.py中调用窗体:

python">from gis>qgis.core import QgsApplication
from PyQt5.QtCore import Qt
from mainWindowImpl import MainWindowif __name__ == '__main__':QgsApplication.setPrefixPath(r'D:\software\QGIS 3.38.0\apps\gis>qgis', True)QgsApplication.setAttribute(Qt.AA_EnableHighDpiScaling)app = QgsApplication([], True)app.initQgis()mainWindow = MainWindow()mainWindow.show()app.exec_()app.exitQgis()


http://www.ppmy.cn/embedded/115866.html

相关文章

BOE(京东方)携故宫博物院举办2024“照亮成长路”公益项目落地仪式以创新科技赋能教育可持续发展

2024年9月20日,BOE(京东方)“照亮成长路”智慧教室落成暨百堂故宫传统文化公益课山西活动落地仪式在山西省太原市娄烦县实验小学隆重举行。自“照亮成长路”教育公益项目正式设立以来,BOE(京东方)持续以创新…

[c++进阶(九)] STL之deque深度剖析

1.前言 本章重点 本章将会着重的介绍deque底层到底是如何实现它能够双向进出的,并且双向进出的消耗率还特别低,并且讲解deque的优缺点。 2.deque的使用 如果没有看我前面两篇文章的,请先看前面两篇文章再来看这篇文章,可以有助于…

颍川陈氏——平民崛起的典范

园子说颍川 广州有一处老建筑“陈家祠”,豪华精美堪比皇宫,誉为“岭南建筑艺术明珠”、“新世纪羊城八景”之一,是全国文保单位,4A 级景区。主体建筑以中轴线三座厅堂为中心,由大小十九座单体建筑组成,占地…

PHP校园外卖跑腿小程序带后台(商业版)

有需要请加文章底部Q哦 可远程调试 PHP校园外卖跑腿小程序带后台(商业版) 一 介绍 此校园外卖跑腿小程序端基于原生开发,后端基于ThinkPHP5框架开发,数据库mysql,系统角色分为用户,商家(自配送),跑腿员,管…

【TypeScript】 数据类型

文章目录 数据类型1. TypeScript Number进制表示:常用的内置属性:常用的内置方法: 2. TypeScript String字符串的创建:常用的内置属性和方法: 3. TypeScript Array数组的声明与使用:常用的内置属性和方法&a…

罗德岛战记游戏源码(客户端+服务端+数据库+全套源码)游戏大小9.41G

罗德岛战记游戏源码(客户端服务端数据库全套源码)游戏大小9.41G 下载地址: 通过网盘分享的文件:【源码】罗德岛战记游戏源码(客户端服务端数据库全套源码)游戏大小9.41G 链接: https://pan.baidu.com/s/1y0…

Django 创建好的模块怎么在后台显示

1、配置模型及其需要显示的数据 刚才创建好的tests的增删改查,在后台是不显示的,所以需要进行配置,在刚才创建好的模块里找到admin.py文件,在里面进行如下配置 from django.contrib import adminfrom . import models from .models import …

“跨链桥“的危害

跨链桥(Cross-Chain Bridges)是连接不同区块链网络的工具,允许用户在不同的区块链之间转移资产和数据。尽管跨链桥为区块链生态系统带来了许多便利,但它们也存在一些潜在的危害和风险。以下是一些主要的危害: 1. 安全…