**
**
一、安装配置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界面中点+号添加,进行如下设置
其中,Program中填写的地址是自己电脑中的designer.exe应用程序的位置
其中,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上项目地址查看