簡體   English   中英

如何在 QTreeWidget 中制作可編輯值

[英]How to make editable value in 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM