PySimpleGUI 树不会将数据插入树中

问题描述 投票:0回答:1

我一直在 PysimpleGUI 中处理这棵树,突然,当我给它一个充满数据的列表时,

insert
方法决定停止工作。我调试了几乎所有有关它的内容,函数
insert
本身停止工作或向树数据添加任何内容。这是代码

import PySimpleGUI as sg
from services import HandlePacks

Cardpacks = HandlePacks()
card_packs = Cardpacks.get_packs()
treeData = sg.TreeData()
for pack_name, card_pack in card_packs:
    print("Adding pack:", pack_name)
    treeData.insert("", str(pack_name), str(pack_name), "", icon=None)
    for card in card_pack:
        card_name = card["name"]
        print("Adding card:", card_name)
        treeData.insert(str(pack_name), str(card_name), str(card_name), "", icon=None)
print(treeData)

sg.theme("LightGrey1")

tree = sg.Tree(
    treeData,
    font=("Helvetica", 16),
    col0_width=30,
    enable_events=True,
    show_expanded=False,
    key="-TREE-",
)

delete_button = sg.Button("Delete Pack", disabled=True)

layout = [
    [sg.Text("All your Packs:", font=("Calibri", 24))],
    [tree],
    [delete_button],
]

window = sg.Window("Memory Game", layout, size=(600, 500))

while True:
    event, values = window.read()
    if event in (None, "Exit"):
        break

    if event == "-TREE-":
        selected_item = values["-TREE-"]
        if selected_item:
            delete_button.update(disabled=False)
        else:
            delete_button.update(disabled=True)

    elif event == "Delete Pack":
        selected_item = values["-TREE-"][0]
        Cardpacks.delete_pack(selected_item)

    window.refresh()


window.close()

我尝试将其从

Insert
更改为
insert
,但没有帮助。任何帮助将不胜感激。

python tree pysimplegui
1个回答
0
投票

它没有告诉我们图书馆

services
是什么,也许
card_packs
有问题,或者它是

我创建了一个基本数据来展示它们如何插入到TreeData中,然后作为Tree元素的数据。

import PySimpleGUI as sg

kinds = {"Spades":"♠", "Hearts":"♥", "Diamonds":"♦", "Clubs":"♣"}
names = ["Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"]
card_packs = [[kind, [kinds[kind]+name for name in names]] for kind in kinds]

treeData = sg.TreeData()
for pack_name, card_pack in card_packs:
    treeData.insert("", str(pack_name), str(pack_name), [], icon=None)
    for card in card_pack:
        card_name = card
        treeData.insert(str(pack_name), str(card_name), str(card_name), [], icon=None)

sg.theme("LightGrey1")

tree = sg.Tree(
    treeData,
    font=("Helvetica", 16),
    col0_width=30,
    enable_events=True,
    show_expanded=True,
    key="-TREE-",
)
delete_button = sg.Button("Delete Pack", disabled=True)
layout = [
    [sg.Text("All your Packs:", font=("Calibri", 24))],
    [tree],
    [delete_button],
]
window = sg.Window("Memory Game", layout)

while True:

    event, values = window.read()

    if event == sg.WIN_CLOSED:
        break

window.close()

© www.soinside.com 2019 - 2024. All rights reserved.