[PyQt5-Node-Editor][进阶篇]使用Pyqt5制作节点编辑器(21)——实现主窗口

目标

请添加图片描述

本章节里将真正的重点实现主界面的建立,以及功能的实现,将之前View上的按键功能移至主界面
在主界面中心放置View,下面添加statusBar,上面添加菜单栏,并且statusBar将实现当前鼠标在场景的位置显示,以及保存成功等消息的显示

实现

将之前的NodeEditWind改为NodeEditWidget

NodeEditWind将不再担任主界面的显示功能,而是作为一个特殊控件,执行节点编辑器功能

文件名为node_editor_widget.py

from node_scene import Scene
from node_node import Node
from node_graphics_view import QDMGraphicsView
from node_edge import *


class NodeEditWidget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)

        # set QSS
        self.stylesheet_filename = 'qss/nodestyle.qss'
        self.loadStylesheet(self.stylesheet_filename)

        # init
        self.initUI()

    def initUI(self):

        self.layout = QVBoxLayout()
        self.layout.setContentsMargins(0, 0, 0, 0)

        # create graphics scene
        self.scene = Scene()
        self.grScene = self.scene.grScene

        self.addNode()

        # create graphics view
        self.view = QDMGraphicsView(self.grScene, self)
        self.layout.addWidget(self.view)

    def addNode(self):
        node1 = Node(self.scene, "这是一个节点", inputs=[0, 0, 0], outputs=[3])
        node2 = Node(self.scene, "这是第二个节点", inputs=[1, 1, 1], outputs=[3])
        node3 = Node(self.scene, "这是第三个节点", inputs=[2, 2, 2], outputs=[3])

        node1.setPos(-550, -250)
        node2.setPos(-275, 0)
        node3.setPos(0, -150)

        edge1 = Edge(self.scene, node1.outputs[0], node2.inputs[0], edge_type=EDGE_TYPE_BEZIER)
        edge2 = Edge(self.scene, node2.outputs[0], node3.inputs[2], edge_type=EDGE_TYPE_BEZIER)

    def loadStylesheet(self, filename):
        print('STYLE loading', filename)
        file = QFile(filename)
        file.open(QFile.ReadOnly | QFile.Text)
        stylesheet =
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值