标题:求助使用QTreeWidget生成树状目录
只看楼主
yll148
Rank: 2
等 级:论坛游民
威 望:3
帖 子:266
专家分:15
注 册:2012-7-3
结帖率:87.5%
已结贴  问题点数:20 回复次数:9 
求助使用QTreeWidget生成树状目录
求助,能否使用如下数据,自动检索顶级和子级,创建QTreeWidget树。
单位号    单位名称    上级单位号
TM        公司1    A
TM10      公司2    TM   
TM11      公司3    TM10  
TM12      公司4    TM10  
TM91      公司5    TM   
A    XX任公司                           
K         公司6    A
K00       公司7    K     
K10       公司8    K00   
K11       公司9    K10   
K12       公司10    K10   
K13       公司11    K10   
K15       公司12    K10   
K30       公司13    K00   
K31       公司14    K30   
K311      公司15    K31   
K312      公司16    K31   
K313      公司17    K31   
K34       公司18    K30   
K36       公司19    K30   
K37       公司20    K30   
K50       公司21    K00   
K51       公司22    K50   
K53       公司23    K50   
K55       公司24    K50   
K80       公司25    K     
K81       公司26    K80   
K82       公司27    K80   
K83       公司28    K80   
K831      公司29    K83   
K832      公司30    K83   
K833      公司31    K83   
K834      公司32    K83   
K839      公司33    K83   
K84       公司34    K80   
K841      公司35    K84   
K842      公司36    K84   
K843      公司37    K84   
K85       公司38    K80   
K851      公司39    K85   
K852      公司40    K85   
K858      公司41    K851  
K859      公司42    K851  
K86       公司43    K80   
K861      公司44    K86   
K862      公司45    K86   
K87       公司46    K80   
K871      公司47    K87   
K872      公司48    K87   
K88       公司49    K80   
K89       公司50    K80   
K891      公司51    K89   
K892      公司52    K89   
K893      公司53    K89   
K91       公司54    K80   
K92       公司55    K80   
K99       公司56    K     
L         公司57    A
L00    公司58    L
L10    公司59    L19
L11    公司60    L70
L12    公司61    L00
L13    公司62    L00
L14    公司63    L00
L16    公司64    L00
L18    公司65    L00
L19    公司66    L00
L190    公司67    L19
L31    公司68    L00
L32    公司69    L00
L33    公司70    L00
L34    公司71    L00
L37    公司72    L00
L40    公司73    L00
L41    公司74    L00
L45    公司75    L00
L451    公司76    L45
L452    公司77    L45
L453    公司78    L45
L46    公司79    L00
L48    公司80    L70
L480    公司81    L48B
L481    公司82    L48
L483    公司83    L48
L485    公司84    L48
L486    公司85    L48B
L489    公司86    L48
L48B    公司87    L48
L48X    公司88    L48B
L49    公司89    L70
L59    公司90    L00
L70    公司91    L
L73    公司92    L70
L74    公司93    L70
L741    公司94    L74
L742    公司95    L74
L749    公司96    L74
L75    公司97    L70
L751    公司98    L75
L752    公司99    L751
L755    公司100    L751
L757    公司101    L75
L758    公司102    L75
L76    公司103    L70
L77    公司104    L70
L78    公司105    L70
L79    公司106    L70
L821    公司107    L70
L85    公司108    L70
L851    公司109    L85
L852    公司110    L85
L859    公司111    L85
L99    公司112    L70
LL    公司113    L
搜索更多相关主题的帖子: 生成树 名称 目录 公司 单位 
2023-03-30 07:41
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:20 
以下是示例代码:

程序代码:
from PyQt5.QtWidgets import QApplication, QTreeWidgetItem, QTreeWidget, QWidget, QVBoxLayout
import sys
data = {
    "TM": {"name": "公司1", "parent": "A"},
    "TM10": {"name": "公司2", "parent": "TM"},
    "TM11": {"name": "公司3", "parent": "TM10"},
    "TM12": {"name": "公司4", "parent": "TM10"},
    "TM91": {"name": "公司5", "parent": "TM"},
    "A": {"name": "XX任公司", "parent": ""},
    "K": {"name": "公司6", "parent": "A"},
    "K00": {"name": "公司7", "parent": "K"},
    "K10": {"name": "公司8", "parent": "K00"},
    "K11": {"name": "公司9", "parent": "K10"},
    "K12": {"name": "公司10", "parent": "K10"},
    "K13": {"name": "公司11", "parent": "K10"},
    "K15": {"name": "公司12", "parent": "K10"},
    "K30": {"name": "公司13", "parent": "K00"},
    "K31": {"name": "公司14", "parent": "K30"},
    "K311": {"name": "公司15", "parent": "K31"},
    "K312": {"name": "公司16", "parent": "K31"},
    "K313": {"name": "公司17", "parent": "K31"},
    "K34": {"name": "公司18", "parent": "K30"},
    "K36": {"name": "公司19", "parent": "K30"},
    "K37": {"name": "公司20", "parent": "K30"},
    "K50": {"name": "公司21", "parent": "K00"},
    "K51": {"name": "公司22", "parent": "K50"},
    "K53": {"name": "公司23", "parent": "K50"},
    "K55": {"name": "公司24", "parent": "K50"},
    "K80": {"name": "公司25", "parent": "K"},
    "K81": {"name": "公司26", "parent": "K80"},
    "K82": {"name": "公司27", "parent": "K80"},
    "K83": {"name": "公司28", "parent": "K80"},
    "K831": {"name": "公司29", "parent": "K83"},
    "K832": {"name": "公司30", "parent": "K83"},
    "K833": {"name": "公司31", "parent": "K83"},
    "K834": {"name": "公司32", "parent": "K83"},
    "K839": {"name": "公司33", "parent": "K83"},
    "K84": {"name": "公司34", "parent": "K80"},
    "K841": {"name": "公司35", "parent": "K84"},
    "K842": {"name": "公司36", "parent": "K84"},
    "K843": {"name": "公司37", "parent": "K84"},
    "K85": {"name": "公司38", "parent": "K80"},
    "K851": {"name": "公司39", "parent": "K85"},
    "K852": {"name": "公司40", "parent": "K85"},
    "K858": {"name": "公司41", "parent": "K851"},
    "K859": {"name": "公司42", "parent": "K851"},
    "K86": {"name": "公司43", "parent": "K80"},
    "K861": {"name": "公司44", "parent": "K86"},
    "K862": {"name": "公司45", "parent": "K86"},
    "K87": {"name": "公司46", "parent": "K80"},
    "K871": {"name": "公司47", "parent": "K87"},
    "K872": {"name": "公司48", "parent": "K87"},
    "K88": {"name": "公司49", "parent": "K80"},
    "K89": {"name": "公司50", "parent": "K80"},
    "K891": {"name": "公司51", "parent": "K89"},
    "K892": {"name": "公司52", "parent": "K89"},
    "K893": {"name": "公司53", "parent": "K89"},
    "K91": {"name": "公司54", "parent": "K80"},
    "K92": {"name": "公司55", "parent": "K80"},
    "K99": {"name": "公司56", "parent": "K"},
    "L": {"name": "公司57", "parent": "A"},
    "L00": {"name": "公司58", "parent": "L"},
    "L10": {"name": "公司59", "parent": "L19"},
    "L11": {"name": "公司60", "parent": "L70"},
    "L12": {"name": "公司61", "parent": "L00"},
    "L13": {"name": "公司62", "parent": "L00"},
    "L14": {"name": "公司63", "parent": "L00"},
    "L16": {"name": "公司64", "parent": "L00"},
    "L18": {"name": "公司65", "parent": "L00"},
    "L19": {"name": "公司66", "parent": "L00"},
    "L190": {"name": "公司67", "parent": "L19"},
    "L31": {"name": "公司68", "parent": "L00"},
    "L32": {"name": "公司69", "parent": "L00"},
    "L33": {"name": "公司70", "parent": "L00"},
    "L34": {"name": "公司71", "parent": "L00"},
    "L37": {"name": "公司72", "parent": "L00"},
    "L40": {"name": "公司73", "parent": "L00"},
    "L41": {"name": "公司74", "parent": "L00"},
    "L45": {"name":

会当凌绝顶,一览众山小.
2023-03-30 20:43
yll148
Rank: 2
等 级:论坛游民
威 望:3
帖 子:266
专家分:15
注 册:2012-7-3
得分:0 
回复 2楼 东海ECS
老师还是不行啊?
2023-03-30 21:11
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:0 
没敲完,不想敲了,您自己补全吧

会当凌绝顶,一览众山小.
2023-03-31 18:39
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:0 
程序代码:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTreeWidget, QTreeWidgetItem
class MainWindow(QMainWindow):
    def init(self):
        super().init()
        self.setWindowTitle('QTreeWidget Example')
        self.setGeometry(100, 100, 800, 600)
        self.tree = QTreeWidget()
        self.tree.setHeaderLabels(['单位号', '单位名称'])
        self.setCentralWidget(self.tree)
        # 构建树形结构
        self.build_tree()
    def build_tree(self):
        data = [
            {'单位号': 'TM', '单位名称': '公司1', '上级单位号': 'A'},
            {'单位号': 'TM10', '单位名称': '公司2', '上级单位号': 'TM'},
            {'单位号': 'TM11', '单位名称': '公司3', '上级单位号': 'TM10'},
            {'单位号': 'TM12', '单位名称': '公司4', '上级单位号': 'TM10'},
            {'单位号': 'TM91', '单位名称': '公司5', '上级单位号': 'TM'},
            {'单位号': 'A', '单位名称': 'XX任公司', '上级单位号': ''},
            {'单位号': 'K', '单位名称': '公司6', '上级单位号': 'A'},
            {'单位号': 'K00', '单位名称': '公司7', '上级单位号': 'K'},
            {'单位号': 'K10', '单位名称': '公司8', '上级单位号': 'K00'},
            {'单位号': 'K11', '单位名称': '公司9', '上级单位号': 'K10'},
            {'单位号': 'K12', '单位名称': '公司10', '上级单位号': 'K10'},
            {'单位号': 'K13', '单位名称': '公司11', '上级单位号': 'K10'},
            {'单位号': 'K15', '单位名称': '公司12', '上级单位号': 'K10'},
            {'单位号': 'K30', '单位名称': '公司13', '上级单位号': 'K00'},
            {'单位号': 'K31', '单位名称': '公司14', '上级单位号': 'K30'},
            {'单位号': 'K311', '单位名称': '公司15', '上级单位号': 'K31'},
            {'单位号': 'K312', '单位名称': '公司16', '上级单位号': 'K31'},
            {'单位号': 'K313', '单位名称': '公司17', '上级单位号': 'K31'},
            {'单位号': 'K34', '单位名称': '公司18', '上级单位号': 'K30'},
            {'单位号': 'K36', '单位名称': '公司19', '上级单位号': 'K30'},
            {'单位号': 'K37', '单位名称': '公司20', '上级单位号': 'K30'},
            {'单位号': 'K50', '单位名称': '公司21', '上级单位号': 'K00'},
            {'单位号': 'K51', '单位名称': '公司22', '上级单位号': 'K50'},
            {'单位号': 'K53', '单位名称': '公司23', '上级单位号': 'K50'},
            {'单位号': 'K55', '单位名称': '公司24', '上级单位号': 'K50'},
            {'单位号': 'K80', '单位名称': '公司25', '上级单位号': 'K'},
            {'单位号': 'K81', '单位名称': '公司26', '上级单位号': 'K80'},
            {'单位号': 'K82', '单位名称': '公司27', '上级单位号': 'K80'},
            {'单位号': 'K83', '单位名称': '公司28', '上级单位号': 'K80'},
            {'单位号': 'K831', '单位名称': '公司29', '上级单位号': 'K83'},
            {'单位号': 'K832', '单位名称': '公司30', '上级单位号': 'K83'},
            {'单位号': 'K833', '单位名称': '公司31', '上级单位号': 'K83'},
            {'单位号': 'K834', '单位名称': '公司32', '上级单位号': 'K83'},
            {'单位号': 'K839', '单位名称': '公司33', '上级单位号': 'K83'},
            {'单位号': 'K84', '单位名称': '公司34', '上级单位号': 'K80'},
            {'单位号': 'K841', '单位名称': '公司35', '上级单位号': 'K84'},
            {'单位号': 'K842', '单位名称': '公司36', '上级单位号': 'K84'},
            {'单位号': 'K843', '单位名称': '公司37', '上级单位号': 'K84'},
            {'单位号': 'K85', '单位名称': '公司38', '上级单位号': 'K80'},
            {'单位号': 'K851', '单位名称': '公司39', '上级单位号': 'K85'},
            {'单位号': 'K852', '单位名称': '公司40', '上级单位号': 'K85'},
            {'单位号': 'K858', '单位名称': '公司41', '上级单位号': 'K851'},
            {'单位号': 'K859', '单位名称': '公司42', '上级单位号': 'K851'},
            {'单位号': 'K86', '单位名称': '公司43', '上级单位号': 'K80'},
            {'单位号': 'K861', '单位名称': '公司44', '上级单位号': 'K86'},
            {'单位号': 'K862', '单位名称': '公司45', '上级单位号': 'K86'},
            {'单位号': 'K87', '单位名称': '公司46', '上级单位号':

会当凌绝顶,一览众山小.
2023-03-31 18:47
yll148
Rank: 2
等 级:论坛游民
威 望:3
帖 子:266
专家分:15
注 册:2012-7-3
得分:0 
回复 5楼 东海ECS
老师您,谢谢您,可是只出现窗口,不显示TREE树啊?
2023-03-31 19:22
yll148
Rank: 2
等 级:论坛游民
威 望:3
帖 子:266
专家分:15
注 册:2012-7-3
得分:0 
回复 5楼 东海ECS
麻烦老师再看看呗!
2023-03-31 22:43
pvm2000
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:24
帖 子:159
专家分:256
注 册:2022-12-22
得分:0 
基本思路:将上面树状结构(TXT)保存为文本文件,读入,处理为树状结构
2023-04-01 06:08
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:0 
程序代码:
from PyQt5.QtWidgets import QApplication, QTreeWidget, QTreeWidgetItem
import sys
class MyTreeWidget(QTreeWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setHeaderLabels(['Name', 'Type'])
        self.addTopLevelItems(self.create_items())
    def create_items(self):
        items = []
        top_items = ['单位号' ,   '单位名称'   , '上级单位号']
        sub_items = {
    "TM": {"name": "公司1", "parent": "A"},
    "TM10": {"name": "公司2", "parent": "TM"},
    "TM11": {"name": "公司3", "parent": "TM10"},
    "TM12": {"name": "公司4", "parent": "TM10"},
    "TM91": {"name": "公司5", "parent": "TM"},
    "A": {"name": "XX任公司", "parent": ""},
    "K": {"name": "公司6", "parent": "A"},
    "K00": {"name": "公司7", "parent": "K"},
    "K10": {"name": "公司8", "parent": "K00"},
    "K11": {"name": "公司9", "parent": "K10"},
    "K12": {"name": "公司10", "parent": "K10"},
    "K13": {"name": "公司11", "parent": "K10"},
    "K15": {"name": "公司12", "parent": "K10"},
    "K30": {"name": "公司13", "parent": "K00"},
    "K31": {"name": "公司14", "parent": "K30"},
    "K311": {"name": "公司15", "parent": "K31"},
    "K312": {"name": "公司16", "parent": "K31"},
    "K313": {"name": "公司17", "parent": "K31"},
    "K34": {"name": "公司18", "parent": "K30"},
    "K36": {"name": "公司19", "parent": "K30"},
    "K37": {"name": "公司20", "parent": "K30"},
    "K50": {"name": "公司21", "parent": "K00"},
    "K51": {"name": "公司22", "parent": "K50"},
    "K53": {"name": "公司23", "parent": "K50"},
    "K55": {"name": "公司24", "parent": "K50"},
    "K80": {"name": "公司25", "parent": "K"},
    "K81": {"name": "公司26", "parent": "K80"},
    "K82": {"name": "公司27", "parent": "K80"},
    "K83": {"name": "公司28", "parent": "K80"},
    "K831": {"name": "公司29", "parent": "K83"},
    "K832": {"name": "公司30", "parent": "K83"},
    "K833": {"name": "公司31", "parent": "K83"},
    "K834": {"name": "公司32", "parent": "K83"},
    "K839": {"name": "公司33", "parent": "K83"},
    "K84": {"name": "公司34", "parent": "K80"},
    "K841": {"name": "公司35", "parent": "K84"},
    "K842": {"name": "公司36", "parent": "K84"},
    "K843": {"name": "公司37", "parent": "K84"},
    "K85": {"name": "公司38", "parent": "K80"},
    "K851": {"name": "公司39", "parent": "K85"},
    "K852": {"name": "公司40", "parent": "K85"},
    "K858": {"name": "公司41", "parent": "K851"},
    "K859": {"name": "公司42", "parent": "K851"},
    "K86": {"name": "公司43", "parent": "K80"},
    "K861": {"name": "公司44", "parent": "K86"},
    "K862": {"name": "公司45", "parent": "K86"},
    "K87": {"name": "公司46", "parent": "K80"},
    "K871": {"name": "公司47", "parent": "K87"},
    "K872": {"name": "公司48", "parent": "K87"},
    "K88": {"name": "公司49", "parent": "K80"},
    "K89": {"name": "公司50", "parent": "K80"},
    "K891": {"name": "公司51", "parent": "K89"},
    "K892": {"name": "公司52", "parent": "K89"},
    "K893": {"name": "公司53", "parent": "K89"},
    "K91": {"name": "公司54", "parent": "K80"},
    "K92": {"name": "公司55", "parent": "K80"},
    "K99": {"name": "公司56", "parent": "K"},
    "L": {"name": "公司57", "parent": "A"},
    "L00": {"name": "公司58", "parent": "L"},
    "L10": {"name": "公司59", "parent": "L19"},
    "L11": {"name": "公司60", "parent": "L70"},
    "L12": {"name": "公司61", "parent": "L00"},
    "L13": {"name": "公司62", "parent": "L00"},
    "L14": {"name": "公司63", "parent": "L00"},
    "L16": {"name": "公司64", "parent": "L00"},
    "L18": {"name": "公司65", "parent": "L00"},
    "L19": {"name": "公司66", "parent": "L00"},
    "L190": {"name": "公司67", "parent": "L19"},
    "L31": {"name": "公司68", "parent": "L00"},
    "L32": {"name": "公司69", "parent": "L00"},
    "L33": {"name": "公司70", "parent": "L00"},
    "L34": {"name": "公司71", "parent": "L00"},
    "L37": {"name": "公司72", "parent": "L00"},
    "L40": {"name": "公司73", "parent": "L00"},
    "L41": {"name": "公司74", "parent": "L00"},
    "L45": {"name":
        for top_item in top_items:
            item = QTreeWidgetItem([top_item, 'Top Level'])
            for sub_item in sub_items.get(top_item, []):
                sub_item = QTreeWidgetItem([sub_item, 'Sub Level'])
                item.addChild(sub_item)
            items.append(item)
        return items
if __name__ == '__main__':
    app = QApplication(sys.argv)
    tree = MyTreeWidget()
    tree.show()
    sys.exit(app.exec_())


该代码定义了一个名为MyTreeWidget的自定义QTreeWidget类,并在其中创建了一个create_items()方法,该方法返回一个QTreeWidgetItem对象列表,其中包含所有的顶级和子级项目。然后,将其添加到QTreeWidget中。
在该示例中,我们创建了三个顶级项目,每个项目下面有三个子级项目。我们使用QTreeWidgetItem类创建项目,并使用addChild()方法将子级项目添加到其相应的父级项目中。
我们还设置了QTreeWidget的标题标签,并将树中的所有项目添加到顶级项目中。
最后,我们执行应用程序并显示树。

会当凌绝顶,一览众山小.
2023-04-01 20:28
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:0 
sub_item的没敲完,您自己继续敲吧

会当凌绝顶,一览众山小.
2023-04-01 20:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511727-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.132816 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved