使用PyQt5中QTreeWidget和QTableWidget创建界面

**

QTreeWidget和QTableWidget创建界面

**
一、安装配置QtDesigner
1、安装PyQt5:使用的是豆瓣提供的镜像
在cmd中输入如下语句:

pip install PyQt5 -i https://pypi.douban.com/simple

然后再输入如下语句:

pip install PyQt5-tools -i https://pypi.douban.com/simple

2、在Pycharm中配置PyQt5
在File——Tools——External Tools界面中点+号添加,进行如下设置
使用PyQt5中QTreeWidget和QTableWidget创建界面_第1张图片
其中,Program中填写的地址是自己电脑中的designer.exe应用程序的位置
使用PyQt5中QTreeWidget和QTableWidget创建界面_第2张图片
其中,Program中填写的地址是自己电脑中的pyuic5.exe应用程序的位置
二、使用QTreeWidget和QTableWidget控件创建界面
实现的功能:点击QTreeWidget中节点会在QTableWidget中出现点击节点的信息
1、在QtDesigner中使用自己想要的控件,创建一个UI界面,然后用pyuic将ui文件转换成py文件,为保证能够正常使用转换后的py文件,需要将转换后的py文件中以下三个语句注释掉:

MainWindow.setCentralWidget(self.centralwidget)
MainWindow.setMenuBar(self.menubar)
MainWindow.setStatusBar(self.statusbar)

2、QTreeWidget中的设置
QTreeWidget中的传入节点信息使用列表中的字典形式存储
传入的数据

group1List=[{'address':'101','Pa':11},{'address':'102','Pa':12},
            {'address':'103','Pa':13},{'address':'104','Pa':14}]
group2List=[{'address':'201','Pa':15},{'address':'202','Pa':16},
            {'address':'203','Pa':17},{'address':'204','Pa':18}]

创建一个creategroup函数来创建树形目录,部分代码如下:

        group = QTreeWidgetItem(self.treeWidget)
        groupdic = {'group': group, 'groupname': groupname}
        #将树形结构中的节点名称使用resultList存储
        resultList = [x['address'] for x in childList]
        for i in resultList:
            child = QTreeWidgetItem()
            randname = i
            #设置节点名称
            child.setText(0, randname)
            child.setTextAlignment(0, Qt.AlignHCenter | Qt.AlignVCenter)
            group.addChild(child)
        group.setText(0, groupname)

3、QTableWidget中的设置
要想在点击QTreeWidget中节点会在QTableWidget中出现点击节点的信息,需要在程序初始化的时候,添加如下语句:

self.treeWidget.itemClicked.connect(self.isclick)

isclick是指class中的函数,其部分代码如下:

       #判断是否是二级节点
        if item.child(0) is None:
           #判断第0行第一列是否为空
            if self.tableWidget.item(0,1)is None:
                #为空则插入一列
                self.tableWidget.insertColumn(1)
                newItem3 = QTableWidgetItem()
                #设置表头
                self.tableWidget.setHorizontalHeaderItem(1, newItem3)
                self.tableWidget.horizontalHeaderItem(1).setText("功率")
                newItem4 = QTableWidgetItem()
                self.tableWidget.setItem(0, 1, newItem4)
                #查找节点信息
            for i in range(len(group1List)):
                if item.text(column)==group1List[i]['address']:
                    pa=str(group1List[i]['Pa'])
                    break
            for i in range(len(group2List)):
                if item.text(column) == group2List[i]['address']:
                    pa = str(group2List[i]['Pa'])
                    break
            #将节点信息插入表中
            self.tableWidget.item(0, 0).setText(item.text(column))
            self.tableWidget.item(0, 1).setText(pa)
        else:
            #点击一级节点
            self.tableWidget.removeColumn(1)
            self.tableWidget.item(0, 0).setText(item.text(column))

更多完整的代码可以github上项目地址查看

你可能感兴趣的:(使用PyQt5中QTreeWidget和QTableWidget创建界面)