python编程怎么使用PyQt创建UE蓝图
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要讲解了"python编程怎么使用PyQt创建UE蓝图",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python编程怎么使用PyQt创建UE
千家信息网最后更新 2026年10月31日python编程怎么使用PyQt创建UE蓝图
这篇文章主要讲解了"python编程怎么使用PyQt创建UE蓝图",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python编程怎么使用PyQt创建UE蓝图"吧!
实现思路
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蓝图"的内容了,经过本文的学习后,相信大家对python编程怎么使用PyQt创建UE蓝图这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
节点
蓝图
编程
就是
端口
篇文章
学习
东西
也就是
内容
场地
思路
方法
样式
下图
两个
主体
之间
可以通过
地图
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网金融 科技
深圳互联网科技公司
互联网科技排名
亿策互联网科技
电子科技大学互联网
深圳天众互联网科技公司
农村开互联网科技讲堂
广州优美互联网科技
互联网时代科技改变生活
厦门比较好的科技互联网公司
互联网还是高科技吗
赶超互联网科技 微信多开
银川新华互联网科技学校联系电话
广州新华互联网科技学校电竞方面
互联网行业科技股
济南有互联网科技公司吗
高科技互联网套路
互联网科技股为什么大涨
优雇互联网科技有限公司
利用互联网等科技手段
南京欣网互联网络科技
互联网新科技
高科技与互联网
深圳育鹏互联网科技有限公司招聘
美国互联网科技实力
山东星卡互联网科技有限公司官网
深圳互联网科技的发展
互联网科技包装股
河南商务圈互联网科技有限公司
平安好医生打造互联网科技医疗