from PyQt5.QtWidgets import (QMainWindow, QWidget, QApplication,
QToolBox, QPushButton, QLabel,
QPlainTextEdit, QTreeWidget, QTreeWidgetItem)
from PyQt5.QtGui import QIcon, QPixmap
from MainForm import Ui_MainWindow
from ChildrenForm2 import Ui_Form
import sys
class MainForm(QMainWindow, Ui_MainWindow):
def __init__(self):
super(MainForm, self).__init__()
# 主窗口初始化时实现主窗口布局
self.setupUi(self)
# 创建一个QTreeWidget部件
self.tree = QTreeWidget()
# 设置部件的列数为1
self.tree.setColumnCount(1)
# 设置头部信息,因为上面设置列数为2,所以要设置两个标识符
# self.tree.setHeaderLabels(['节点名称'])
# 设置表头信息:隐藏表头
self.tree.setHeaderHidden(1)
# 设置root和root2为self.tree的子树,所以root和root2就是跟节点
root = QTreeWidgetItem(self.tree)
root2 = QTreeWidgetItem(self.tree)
# 设置root节点的打开/关闭状态下的不同的图片
icon = QIcon()
# 节点打开状态
icon.addPixmap(QPixmap("./folder open.png"), QIcon.Normal, QIcon.On)
# 节点关闭状态
icon.addPixmap(QPixmap("./folder closed.png"), QIcon.Normal, QIcon.Off)
root.setIcon(0, icon)
# 设置根节点的名称
root.setText(0, '第一节点')
root2.setText(0, '第二节点')
# 为root节点设置子结点
child1 = QTreeWidgetItem(root)
# 设置child1节点的图片
icon2 = QIcon()
icon2.addPixmap(QPixmap("./Original Point.png"), QIcon.Normal)
child1.setIcon(0, icon2)
child1.setText(0, 'child1')
# child1.setText(1, 'name1')
child2 = QTreeWidgetItem(root)
# 设置child2节点的图片
child2.setIcon(0, icon2)
child2.setText(0, 'child2')
# child2.setText(1, 'name2')
child3 = QTreeWidgetItem(root)
# 设置child3节点的打开 / 关闭状态下的不同的图片
child3.setIcon(0, icon)
child3.setText(0, 'child3')
child4 = QTreeWidgetItem(child3)
# 设置child4节点的图片
child4.setIcon(0, icon2)
child4.setText(0, 'child4')
# child4.setText(1, 'name4')
# 为root2节点设置子结点
child1 = QTreeWidgetItem(root2)
child1.setText(0, 'child1')
# child1.setText(1, 'name1')
child2 = QTreeWidgetItem(root2)
child2.setText(0, 'child2')
# child2.setText(1, 'name2')
child3 = QTreeWidgetItem(root2)
child3.setText(0, 'child3')
child4 = QTreeWidgetItem(child3)
child4.setText(0, 'child4')
toolBox = QToolBox()
# 设置左侧导航栏 toolBox 初始化时的宽度
toolBox.setStyleSheet("QToolBoxButton { min-width:210px}")
# 设置左侧导航栏 toolBox 在左右拉拽时的最小宽度
toolBox.setMinimumWidth(100)
toolBox.addItem(self.tree, QIcon('snapshot.png'), "设置")
toolBox.addItem(QPushButton("Tab Content 1"), "Tab &1")
toolBox.addItem(QLabel("Tab Content 2"), "生产动态分析测试与建模")
toolBox.setCurrentIndex(0) # 设置软件启动时默认打开导航栏的第几个 Item;这里设置的是打开第1个 Item。
self.verticalLayout.addWidget(toolBox)
# # 下面两行为设置 QSplitter 分割器伸缩大小因子,但是这样设置全屏后导航栏放大了不好看
# self.splitter.setStretchFactor(0, 30) # 分割器左边第1个占比例30%
# self.splitter.setStretchFactor(1, 70) # 分割器左边第1个占比例70%
# 下面一行为设置 QSplitter 分割器伸缩大小因子,但是这样设置全屏后导航栏放大了比较好看;不清楚原因。
self.splitter.setStretchFactor(0, 0) # 此函数用于设定:控件是否可伸缩。第一个参数用于指定控件的序号。第二个函数大于0时,表示控件可伸缩,小于0时,表示控件不可伸缩。
self.splitter.setStretchFactor(1, 1) # 此函数用于设定:控件是否可伸缩。第一个参数用于指定控件的序号。第二个函数大于0时,表示控件可伸缩,小于0时,表示控件不可伸缩。
# 设置 QSplitter 分割器各部分最小化时的情况,设置为“False”意味着左右拉动分隔栏时各部分不会消失;此设置也可以在界面设计时在 QtDesigner 里设置。
self.splitter.setChildrenCollapsible(False)
# 设置 QSplitter 分割器随主窗口自适应大小变化。此设置也可以在界面设计时在 QtDesigner 里设置。
self.splitter.setAutoFillBackground(True)
# 主窗口初始化时实例化子窗口
self.child = ChildrenForm()
# 在主窗口的QSplitter里添加子窗口
self.splitter.addWidget(self.child)
class ChildrenForm(QWidget, Ui_Form):
def __init__(self):
super(ChildrenForm, self).__init__()
# 子窗口初始化时实现子窗口布局
self.setupUi(self)
if __name__ == "__main__":
app = QApplication(sys.argv)
myshow = MainForm()
myshow.show()
sys.exit(app.exec_())
没有合适的资源?快使用搜索试试~ 我知道了~
(续2)Python3.x+Pyqt5实现主窗体(QMainWindow类)里的分割器QSplitter动态载入子窗体(QWid...
共19个文件
png:4个
xml:4个
py:4个
需积分: 50 25 下载量 115 浏览量
2018-07-31
23:17:29
上传
评论
收藏 44KB RAR 举报
温馨提示
(续2)Python3.x+Pyqt5实现主窗体(QMainWindow类)里的分割器QSplitter动态载入子窗体(QWidget类),实现了导航栏抽屉效果
资源推荐
资源详情
资源评论
收起资源包目录
wangyong_15.rar (19个子文件)
wangyong_15
ChildrenForm2.py 1KB
folder closed.png 821B
Original Point.png 594B
ChildrenForm.ui 1013B
__pycache__
ChildrenForm.cpython-35.pyc 1KB
ChildrenForm2.cpython-35.pyc 1KB
MainForm.cpython-35.pyc 2KB
snapshot.png 4.89MB
ChildrenForm2.ui 1KB
MainForm.py 2KB
mainfile.py 5KB
.idea
wangyong_13.iml 459B
misc.xml 213B
modules.xml 274B
workspace.xml 22KB
inspectionProfiles
profiles_settings.xml 228B
MainForm.ui 2KB
ChildrenForm.py 1KB
folder open.png 855B
共 19 条
- 1
资源评论
higher80
- 粉丝: 114
- 资源: 34
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功