返回顶部
首页 > 资讯 > 后端开发 > Python >python编程使用PyQt创建UE蓝图
  • 244
分享到

python编程使用PyQt创建UE蓝图

2024-04-02 19:04:59 244人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录实现思路1、场地部署2、节点创建3、连线①首先是连线类的创建②如何连接节点实现思路 1、场地部署:我们需要拥有一个可以用来画节点的地方!详看我这篇文章QGraphiCSScene

实现思路

1、场地部署:我们需要拥有一个可以用来画节点的地方!详看我这篇文章QGraphiCSScene、QGraphicsView的基础使用,这篇文章用的也是同样的方法PyQt制作预览窗口(游戏中的小地图)
2、节点创建:我们需要自定义节点,也就是下图中的方框内的东西,主要涉及到的就是Qt中的QGraphicsItem,通过继承这个类来自定义节点样式
3、连线:涉及到的就是Qt中的QGraphicsLineItem,继承这个类,并在paint中自定义连线样式,比如我这里使用的是qt自带的贝塞尔曲线
实现的效果如下,节点之间可以通过端口互相连接

在这里插入图片描述

1、场地部署


class EditorView(QGraphicsView):
    def __init__(self, parent=None):
        super(EditorView, self).__init__(parent)
        self.parent = parent
        self.scaleFactor = 1
        self.lastPos = QPointF()
        self.scene = EditorScene(self)
        self.setScene(self.scene)
        self.setSceneRect(-1 << 30, -1 << 30, 1 << 31, 1 << 31)
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.verticalScrollBar().setEnabled(False)
        self.horizontalScrollBar().setEnabled(False)

class EditorScene(QGraphicsScene):
    def __init__(self, parent=None):
        super(EditorScene, self).__init__(parent)

	def drawBackground(self, painter, rect):
		pass
		# 在这里画底图,也就是上面的方格图

2、节点创建

下面是创建节点的主体,就那个黑框框的东西


class nodeItem(QGraphicsItem):
    def __init__(self, parent=None):
        super(NodeItem, self).__init__(parent)
        self.setFlag(QGraphicsItem.ItemIsMovable, True)
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
        self.setFlag(QGraphicsItem.ItemSendsGeometryChanges, True)
        self.setFlag(QGraphicsItem.ItemIsFocusable, True)
        self.nodeName = "Node"
        self.width = 150
        self.height = 50
		self.addPort()
    def addPort(self):
        leftPort = PortItem(self)
        leftPort.setPos(5, self.height/2.7)
        rightPort = PortItem(self)
        rightPort.setPos(self.width-20, self.height/2.7)
    def paint(self, painter, style, *args, **kwargs):
        brush = QBrush(QColor(0xaa, 0xaa, 0xaa, 0xaa))
        painter.setBrush(brush)
        pen = QPen()
        pen.setWidth(1)
        painter.setPen(pen)
        painter.drawRect(0, 0, self.width, self.height)
        painter.drawText(self.width/2.5, self.height/1.8, self.nodeName)

下面是节点端口的创建


class PortItem(QGraphicsItem):
    def __init__(self, parent=None):
        super(PortItem, self).__init__(parent)
        self.portDiam = 15
    def paint(self, painter, style, *args, **kwargs):
        portColor = QColor(0x00, 0xaa, 0x00, 0x66)
        painter.setBrush(portColor)
        pen = QPen()
        pen.setColor(portColor)
        pen.setWidth(2)
        painter.setPen(pen)
        painter.drawEllipse(0, 0, self.portDiam, self.portDiam)

在节点NodeItem里面,创建两个端口用于连接

3、连线

①首先是连线类的创建


class LineItem(QGraphicsItem):
    def __init__(self, posStart, posEnd, parent=None):
        super(LineItem, self).__init__(parent)
        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
        self.setFlag(QGraphicsItem.ItemSendsGeometryChanges, True)
        self.setFlag(QGraphicsItem.ItemIsFocusable, True)
        self.posStart = posStart
        self.posEnd = posEnd
    def paint(self, painter, style, *args, **kwargs):
        midPos = (self.posStart + self.posEnd)/2
        lineColor = QColor(0xff, 0x00, 0x00, 0xff)
        pen = QPen()
        pen.setColor(lineColor)
        pen.setWidth(2)
        painter.setPen(pen)
        linePath = QPainterPath()
        linePath.moveTo(self.posStart)
        linePath.cubicTo(QPointF(midPos.x(), self.posStart.y()), midPos, self.posEnd)
        painter.drawPath(linePath)

②如何连接节点


def mouseReleaseEvent(self, event):
	self.line = LineItem(self.portPosStart, self.portPosEnd)
    self.scene.addItem(self.line)

ps写在最后,如果你的图没有刷新,你可以先把窗口缩小再打开,他就会刷新了,如果你想让他自动刷新,就调用scene.update()方法吧!

以上就是python编程使用PyQt创建UE蓝图的详细内容,更多关于PyQt创建UE蓝图的资料请关注编程网其它相关文章!

--结束END--

本文标题: python编程使用PyQt创建UE蓝图

本文链接: https://lsjlt.com/news/155805.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python编程使用PyQt创建UE蓝图
    目录实现思路1、场地部署2、节点创建3、连线①首先是连线类的创建②如何连接节点实现思路 1、场地部署:我们需要拥有一个可以用来画节点的地方!详看我这篇文章QGraphicsScene...
    99+
    2024-04-02
  • python编程怎么使用PyQt创建UE蓝图
    这篇文章主要讲解了“python编程怎么使用PyQt创建UE蓝图”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python编程怎么使用PyQt创建UE蓝图”吧!实现思路场地部署:我们需要拥有...
    99+
    2023-06-25
  • python编程使用PyQt制作预览窗口游戏中的小地图
    目录写作思路1、简述实现原理2、部分代码解析①方框的完整代码②编辑界面③预览窗口3、位置同步解析①上下两屏位置同步、编辑屏位置保持不变写作思路 1、简述实现原理 2、部分代码解析 3...
    99+
    2024-04-02
  • 怎么使用python编程创建文件夹
    在Python中,可以使用内置的os模块来创建文件夹。以下是一个简单的示例代码: import os # 指定要创建的文件夹路径 ...
    99+
    2024-04-02
  • Python使用matplotlib创建Gif动图的思路
    目录1、Matplotlib 简介2、绘制动画正弦和余弦波3、绘制曲面图4、绘制回归图1、Matplotlib 简介 数据可视化有助于更有效地讲述有关数据的故事并使其易于呈现。有时很...
    99+
    2024-04-02
  • 用Python创建简易网站图文教程
    前言 本方法基于web2py框架,使用web2py的完整网站数据包创建简单网站。 web2py 是一个为Python语言提供的全功能Web应用框架,旨在敏捷快速的开发Web应用,具有...
    99+
    2024-04-02
  • 简要讲解Python编程中线程的创建与锁的使用
    创建线程 创建线程的两种方法: 1,直接调用threading.Thread来构造thread对象,Thread的参数如下: class threading.Thread(group=None, targe...
    99+
    2022-06-04
    线程 简要 Python
  • vue使用openlayers创建地图
    vue项目中使用openlayers创建地图,供大家参考,具体内容如下 前期准备 安装node环境安装cnpm安装vue-cli 以上步骤网上都有很多教程 搭建vue项目 vue c...
    99+
    2024-04-02
  • 如何使用ECharts和Python接口创建饼图
    如何使用ECharts和Python接口创建饼图ECharts是一个开源的数据可视化库,它提供了丰富的图表类型和灵活的配置选项,使得开发者可以轻松地创建各种图表,包括饼图。而Python则提供了强大的数据处理和可视化的工具,结合EChart...
    99+
    2023-12-17
    Python 饼图 echarts
  • 利用Python程序读取Excel创建折线图
    目录一、打开命令提示符二、通过pip命令安装所需要的工具库三、打开IDLE开始编程附录1、常用的工具库安装2、pip常用命令3、常用的工具库4、常用的marker5、常用的颜色一、打...
    99+
    2024-04-02
  • win8系统蓝牙怎么使用?win8蓝牙使用图文教程
    现在电脑上也有蓝牙设备,蓝牙是我们平时传输文件最常使用的工具,非常的方便。很多朋友虽然电脑上拥有蓝牙功能但是也不会用,每次用都连接不成功。那么win8系统蓝牙怎么使用?本文将与大家一起分享win8蓝牙使用图文教程,希望能...
    99+
    2023-06-06
    win8系统蓝牙怎么使用 win8蓝牙使用 win8 系统 教程 图文
  • python 使用scapy创建arpi
    以下程序均来自《Python.UNIX和Linux系统管理指南》据说scapy是一个很厉害的东西使用的scapy版本为2.1.0,注意导入包的方式与原书略有差别scapy_arping.py #!/usr/bin/env/pyth...
    99+
    2023-01-31
    python scapy arpi
  • Android编程Widget创建与使用方法简明教程
    本文实例讲述了Android编程Widget创建与使用方法。分享给大家供大家参考,具体如下: Android reference中有关于如何建立一个Widget的详细方法,这里...
    99+
    2022-06-06
    方法 教程 Android
  • Hive中创建和使用视图
    在Hive中,可以通过类似于SQL的语法来创建和使用视图。视图是一个虚拟的表,它只包含查询结果而不包含实际的数据,可以简化复杂的查询...
    99+
    2024-04-02
  • 如何使用ECharts和Python接口创建漏斗图
    如何使用ECharts和Python接口创建漏斗图引言:数据可视化是数据分析和数据展示的重要手段,漏斗图是一种常用的数据可视化图表类型,通过漏斗图可以直观地展示数据的变化和转化情况。本文将介绍如何使用ECharts和Python接口创建漏斗...
    99+
    2023-12-17
    echarts Python接口 漏斗图
  • 用python简易编写创建窗口
    一、创建Window窗口 # 创建Window窗口.py import tkinterroot=tkinter.Tk() # 创建Window窗口对象 # 窗口属性 root.geometry('300x200+300+30...
    99+
    2023-08-31
    python 开发语言
  • Python中使用subprocess库创建附加进程
    前言 subprocess库提供了一个API创建子进程并与之通信。这对于运行生产或消费文本的程序尤其有好处,因为这个API支持通过新进行的标准输入和输出通道来回传数据。 本篇,将详细介绍Python创建附加进行的库:...
    99+
    2022-06-03
    Python附加进程 Python subprocess库附加进程 Python subprocess库
  • 使用python怎么创建一个GUI程序
    本篇文章为大家展示了使用python怎么创建一个GUI程序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬...
    99+
    2023-06-14
  • 怎么在python中使用threading创建线程
    本篇文章为大家展示了怎么在python中使用threading创建线程,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究...
    99+
    2023-06-14
  • Python线程池thread pool怎么创建使用
    本文小编为大家详细介绍“Python线程池thread pool怎么创建使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python线程池thread pool怎么创建使用”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作