python - 如何在 QTreeWidget 中创建可编辑值
问题描述
我有一个项目。我处理 json 文件。我在python中有一个排序。这是 TreeView,我想对 TreeView 进行更改。我如何编辑每个单元格。
import json
from PyQt5.QtWidgets import *
class ViewTree(QTreeWidget):
def __init__(self, value):
super().__init__()
def fill_item(item, value):
def new_item(parent, text, val=None):
child = QTreeWidgetItem([text])
fill_item(child, val)
parent.addChild(child)
child.setExpanded(True)
if value is None: return
elif isinstance(value, dict):
for key, val in sorted(value.items()):
new_item(item, str(key), val)
elif isinstance(value, (list, tuple)):
for val in value:
text = (str(val) if not isinstance(val, (dict, list, tuple))
else '[%s]' % type(val).__name__)
new_item(item, text, val)
else:
new_item(item, str(value))
fill_item(self.invisibleRootItem(), value)
if __name__ == '__main__':
app = QApplication([])
fname = QFileDialog.getOpenFileName()
json_file=open(fname[0],"r")
file=json.load(json_file)
window = ViewTree(file)
window.setGeometry(300, 100, 900, 600)
window.show()
app.exec_()
解决方案
您必须启用该Qt::ItemIsEditable
标志:
from PyQt5.QtCore import Qt
# ...
child = QTreeWidgetItem([text])
child.setFlags(child.flags() | Qt.ItemIsEditable)
推荐阅读
- javascript - 使用 Cypress 中的 contains 选择 Select 元素
- javascript - 根据选择器选项属性更改按钮属性值
- javascript - 在电子 js(Ubuntu)上锁定关闭并最小化
- python - 当我尝试将 keras 数据集拆分为两个类时,数据基数是模棱两可的错误
- node.js - Vue.js 如何将字符串保存为数据库中的对象?
- c++ - 如何从 H264 中的 ffmpeg 读取 sei 未注册的用户数据?
- apache-spark - Spark 作业重新加载后目标同步 S3 存储桶中的重复数据
- ios - 了解 CoreBluetooth 扫描和连接流程
- authentication - Kiali 是否支持 SAML 协议 2.0 进行身份验证?
- android - 使用 Retrofit 上传多个图像时出现 FileNotFoundException