2 Star 10 Fork 7

终點起點/PySide6-UI-Demo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
TreeWidget.py 3.17 KB
一键复制 编辑 原始数据 按行查看 历史
终點起點 提交于 2024-06-28 14:21 +08:00 . 新增部分控件
import sys
import os
import random
from PySide6.QtWidgets import *
from PySide6.QtGui import *
from PySide6.QtCore import *
class Demo(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.parent = parent
mainLayout = QVBoxLayout()
toolBar = QToolBar()
btn = QPushButton('Add Top')
btn.clicked.connect(self.OnAddTopClicked)
toolBar.addWidget(btn)
btn = QPushButton('Add Child')
btn.clicked.connect(self.OnAddChildClicked)
toolBar.addWidget(btn)
btn = QPushButton('Delete')
btn.clicked.connect(self.OnDelClicked)
toolBar.addWidget(btn)
toolBar.addWidget(QLabel('CurrentItem:'))
self.currentEdit = QLineEdit()
toolBar.addWidget(self.currentEdit)
btn = QPushButton('Update')
btn.clicked.connect(self.OnUpdateClicked)
toolBar.addWidget(btn)
self.treeWidget = QTreeWidget()
self.treeWidget.setHeaderLabels(['ID','Value'])
self.treeWidget.currentItemChanged.connect(self.OnCurrentItemChanged)
mainLayout.addWidget(toolBar)
mainLayout.addWidget(self.treeWidget)
self.setLayout(mainLayout)
def OnCurrentItemChanged(self,current,pre):
txt = f'ID:{current.text(0)},Value:{current.text(1)}'
self.currentEdit.setText(txt)
self.parent.OnShowMessage(f"Current item '{txt}'")
def OnAddTopClicked(self):
id = random.randint(0, 999)
arr = [f'{id}',f'Node{id}']
self.treeWidget.addTopLevelItem(QTreeWidgetItem(arr))
self.parent.OnShowMessage(f"Add top item '{arr[1]}'")
def OnAddChildClicked(self):
id = random.randint(0, 999)
arr = [f'{id}',f'Node{id}']
current = self.treeWidget.currentItem()
if current is None:
self.treeWidget.addTopLevelItem(QTreeWidgetItem(arr))
else:
current.addChild(QTreeWidgetItem(current,arr))
current.setExpanded(True)
self.parent.OnShowMessage(f"Add item '{arr[1]}'")
def OnDelClicked(self):
item = self.treeWidget.currentItem()
if item.parent() is None:
index=-1
for i in range(self.treeWidget.topLevelItemCount()):
if self.treeWidget.takeTopLevelItem(i).text(0)==item.text(0):
index=i
break
self.treeWidget.removeItemWidget(item,index)
else:
for i in range(item.parent().childCount()):
child = item.parent().child(i)
if child.text(0)==item.text(0):
#item.parent().takeChild(i)
item.parent().removeChild(child)
del child
break
self.parent.OnShowMessage(f"Delete item '{item.text(1)}'")
def OnUpdateClicked(self):
old = self.treeWidget.currentItem().text(1)
new = self.currentEdit.text()
self.treeWidget.currentItem().setText(1,new)
self.parent.OnShowMessage(f"Update item from '{old}' to '{new}'")
def runDemo(parent):
wigdet = Demo(parent)
return wigdet
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/johnjiangw/pyside6-ui-demo.git
git@gitee.com:johnjiangw/pyside6-ui-demo.git
johnjiangw
pyside6-ui-demo
PySide6-UI-Demo
master

搜索帮助