Python3.x+Pyqt5实现主窗体里树形导航栏(QTreeWidget工具)按钮驱动分割器QSplitter动态载入多个子窗体,鼠标右键实现展开节点菜单,且第3个子窗体还实现了界面与业务逻辑分离

1、代码下载地址:https://download.csdn.net/download/higher80/10592734

2、主要用到的工具和实现功能的思路:

(1)用到的工具:pyqt或者qt的 QSplitter 和 QTreeWidget 工具。

(2)实现功能的思路:利用 QTreeWidget 可以给每个节点设置“说明文档”的功能(设置“说明文档”用命令:QTreeWidgetItem.setWhatsThis;提取“说明文档”用命令:QTreeWidgetItem.WhatsThis;具体操作见上面1中的代码);这相当于给每个节点重新命名;然后根据每个节点的这个新名字动态载入子窗体。

3、实现的功能:

(1)主界面左侧树形导航栏效果;主界面分割器效果;主窗体左侧树形导航栏动态导入子窗体,子窗体已设置分割器;鼠标右键实现展开和收起节点的菜单功能,以及单个展开和收起节点功能;而且第3个子窗体还实现了界面与业务逻辑分离;如下图1-4。

                                                                                        图1

                                                                                           图2

                                                                                               图3

                                                                                            图4

(2)实现了动态载入子窗体时界面与业务逻辑分离,见下图5;图中,在红框1里输入字符,点击红框2就可以删除字符。

                                                                                  图5

4、主窗体(QMainWindow类)设计,主要是在主窗体(QMainWindow类)成功布局一个  QSplitter;具体实现步骤可以看我自己写的帖子:Python3.x+Pyqt5实现主窗体里QToolBox导航栏抽屉效果和树形导航;实现主窗体里的分割器QSplitter用QToolBox导航栏抽屉效果动态载入子窗体;第3子窗实现了界面与逻辑分离;https://blog.csdn.net/higher80/article/details/81437190

5、注意事项:

(1)在上面1里提供的下载代码里,注意要修改由代码器生成的代码,比如要修改 ChildrenForm.ui、ChildrenForm2.ui 和 ChildrenForm3.ui 生成的类的名称,避免重复!

(2)修改 ChildrenForm.ui、ChildrenForm2.ui 和 ChildrenForm3.ui 生成的窗体的初始大小,修改为一致的大小;这样在主窗体主窗体动态载入子窗体时才会保持子窗体大小的一致性,即软件界面保持稳定。

(3)上面1里下载的代码里面还有4个py文件,分别是:test_01.py,test_02.py,test_03.py 和 test_04.py,它们是网上下载的用于实现鼠标右键出现菜单和展开节点功能的程序,需要时可以参考。

6、如下是 pyqt5 的 QTreeWidget 工具调用节点的部分命令,备用:

self.tree = QTreeWidget()

self.tree.topLevelItem(0);最顶级节点,指定第1个顶级节点;节点编号从0开始。

self.tree.currentItem();当前节点

self.tree.selectedItems();鼠标选中的当前节点

self.tree.topLevelItemCount();最顶级节点的总数

self.tree.topLevelItem(0).child(0);第1个最顶级节点的第1个子节点

self.tree.topLevelItem(0).child(0).child(0);第1个最顶级节点的第1个子节点的第1个子节点

self.tree.currentItem().parent();鼠标选中的当前节点的父节点

self.tree.currentItem().child(0);鼠标选中的当前节点的第1个子节点

self.tree.currentItem().parent().childCount();鼠标选中的当前节点的同级节点的总数量

self.tree.expandItem(self.tree.topLevelItem(0));展开指定节点,指定展开第1个顶级节点

self.tree.collapseItem(self.tree.topLevelItem(0));收起指定节点,指定收起第1个顶级节点

猜你喜欢

转载自blog.csdn.net/higher80/article/details/81459800