PyQt学习笔记(16)——QTreeWidget

http://blog.sina.com.cn/s/blog_4b5039210100h6co.html

    参考资料:Qt documentation online(因为这个帮助文档是基于C++做的,里面的语句是C++写的,不过因为PyQt做了很好的移植,方法的名称,参数等等基本都可以在python中套用)

QTreeWidget的继承关系如下图:

 

 PyQt学习笔记(16)——QTreeWidget

    The QTreeWidget class provides a tree view that uses a predefined tree model.

    因为继承关系是QAbstractItemView->QTreeView->QTreeWidget ,所以和QTableWidget很多地方是类似的。

    如果需要特殊的模式,比如显示硬盘信息及内部文件的dir模式等,都需要用QTreeView,而不是用QTreeWidget

QTableWidget类似,一般步骤是先创建一个QTreeWidget实例,然后设置列数,

然后再添加头。

# !/usr/bin/python

import sys

from PyQt4.QtGui import *

from PyQt4.QtCore import *

class TreeWidget(QMainWindow):

    def __init__(self,parent=None):

        QWidget.__init__(self,parent)

        self.setWindowTitle('TreeWidget')

        self.tree = QTreeWidget()

        self.tree.setColumnCount(2)

        self.tree.setHeaderLabels(['Key','Value'])

        root= QTreeWidgetItem(self.tree)

        root.setText(0,'root')

        child1 = QTreeWidgetItem(root)

        child1.setText(0,'child1')

        child1.setText(1,'name1')

        child2 = QTreeWidgetItem(root)

        child2.setText(0,'child2')

        child2.setText(1,'name2')

        child3 = QTreeWidgetItem(root)

        child3.setText(0,'child3')

        child4 = QTreeWidgetItem(child3)

        child4.setText(0,'child4')

        child4.setText(1,'name4')

        self.tree.addTopLevelItem(root)

        self.setCentralWidget(self.tree)             

app = QApplication(sys.argv)

tp = TreeWidget()

tp.show()

app.exec_()

 

    结果如下

PyQt学习笔记(16)——QTreeWidget



 

    其中的QtreeWidgetItem就是一层层的添加的,其实还是不太方便的。

 

    在应用程序中一般不是这样来创建QTreeView的,特别是比较复杂的Tree,一般都是通过QTreeView来实现而不是QTreeWidget来实现的。

这种与QTreeWidget最大的区别就是,我们自己来定制模式,当然也有些系统提供给我们的模式,比如我们的文件系统盘的树列表,比如下面的:

import sys

from PyQt4 import QtCore, QtGui

if __name__ == "__main__":

    app = QtGui.QApplication(sys.argv)

    model = QtGui.QDirModel() #系统给我们提供的

    tree = QtGui.QTreeView()

    tree.setModel(model)

    tree.setWindowTitle(tree.tr("Dir View"))

    tree.resize(640, 480)

    tree.show()

    sys.exit(app.exec_())

结果如下所示:

 

 PyQt学习笔记(16)——QTreeWidget

所以一般的我们自己定制模式,步骤如下:

import sys

from PyQt4 import QtCore, QtGui

if __name__ == "__main__":

    app = QtGui.QApplication(sys.argv)

    model = TreeModel(需要处理的数据)

    view = QtGui.QTreeView()

    view.setModel(model)

    view.setWindowTitle("Simple Tree Model")

    view.show()

sys.exit(app.exec_())

    其中的TreeModel类是我们自己写的,如何显示我们的数据,可以查看相关资料。

   




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt是一个基于Python的GUI开发工具包,而QTreeWidgetPyQt中的一个控件,用于显示树状结构的数据。 在PyQt中创建一个QTreeWidget的子窗口很简单。首先,我们需要导入PyQt模块并创建一个QMainWindow主窗口对象。然后,创建一个QTreeWidget控件,并将它设置为主窗口的中央部件。最后,向QTreeWidget控件中添加树节点和子节点。 下面是一个简单的示例代码: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTreeWidget, QTreeWidgetItem class MainWindow(QMainWindow): def __init__(self): super().__init__() self.treeWidget = QTreeWidget(self) self.setCentralWidget(self.treeWidget) item1 = QTreeWidgetItem(self.treeWidget, ['节点1']) QTreeWidgetItem(item1, ['子节点1']) QTreeWidgetItem(item1, ['子节点2']) item2 = QTreeWidgetItem(self.treeWidget, ['节点2']) QTreeWidgetItem(item2, ['子节点3']) self.treeWidget.expandAll() if __name__ == '__main__': app = QApplication(sys.argv) mainWindow = MainWindow() mainWindow.show() sys.exit(app.exec_()) ``` 在这个示例中,我们创建了一个主窗口,并在其中添加了一个QTreeWidget控件。然后,我们创建了两个树节点,并将它们分别添加到QTreeWidget控件中。每个树节点下面又添加了一些子节点。 需要注意的是,我们可以通过addTopLevelItem()方法或者直接作为构造函数的参数来添加树节点,而通过addChild()方法来添加子节点。在示例中,我们使用的是addChild()方法。 最后,我们使用expandAll()方法展开了所有树节点。 这就是使用PyQt中的QTreeWidget控件创建一个子窗口的基本步骤。希望能对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值