PyQGIS开发 2 Qt开发入门

PyQGIS Qt开发入门

1 使用 Qt Designer

QGIS在安装后已经配套了Qt Designer,可以在开始菜单 -> QGIS -> Qt Designer for QGIS点击运行程序,或者在QGIS安装目录/bin/qgis-designer.bat(或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-qgis.bat(或python-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-qgis.bat(或python-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:

from qgis.PyQt.QtWidgets import QMainWindow
from 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中调用窗体:

from qgis.core import QgsApplication
from PyQt5.QtCore import Qt
from mainWindowImpl import MainWindow


if __name__ == '__main__':
    QgsApplication.setPrefixPath(r'D:\software\QGIS 3.38.0\apps\qgis', True)
    QgsApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
    app = QgsApplication([], True)
    app.initQgis()
    mainWindow = MainWindow()
    mainWindow.show()
    app.exec_()
    app.exitQgis()
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Winemonk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值