-1

これを行う理由は、ユーザーが を使用してファイル ツリーを作成できるようにするためですQTreeWidget。次に、そのツリーをネストされたdict構造に抽出し、何らかの方法で保存します。txtファイルとアプローチを使用してeval、保存されたすべてのスキームを配列またはキーがスキームの名前である別の辞書にロードすることを考えました。これにより、ユーザーはスキームを選択するか、必要に応じて編集することができます。これは当然、ユーザーが編集を選択dictした後に、保存されたものを元に戻す必要があることにつながります。QTreeWidget

今のところ、ここに私の問題があります。

QTreeWidget再帰関数を使用して、正常にナビゲートできました。私が苦労しているのは、ネストされた を作成する背後にあるロジックdictです。

以下は私がこれまでに思いついたものです:

def tree_to_dict(self, parent, key):
    for i in range(parent.childCount()):
        cur_par = parent.child(i)
        if cur_par.childCount() == 0:
            try:
                if type(self.scheme[key]) is dict :
                    self.scheme[key][cur_par.text(0)] = 'E'
            except KeyError:
                key = cur_par.text(0)
                self.scheme[key] = 'E'
        else:
            key = cur_par.text(0)
            self.scheme[key] = {}
            self.tree_to_dict(cur_par, key)

私はこれが間違っていることを知っています。だからこそ助けが必要なのです。

上記のコードは、次のdictフォームを生成します。QTreeWidget

a
b
    a
c

{'a':'E', 'b':{'a':'E', 'c':'E'}}

ただし、次のようにする必要があります。

{'a':'E', 'b':{'a':'E'}, 'c':'E'}

E は単に、これ以上サブディレクトリがないことを意味します。

私はこれの他のいくつかの実装を見てきましたが、それらはひどく紛らわしく、論理がよくわかりません。これは、私がここで尋ねている質問とほぼ同じですが、まだ回答がありません。私は彼の実装を適応させようとしましたが、(とにかく私にとって) 複雑で、私のプログラムの構造に適合させるのは困難です。

4

1 に答える 1