0

I have been working on this tree in PysimpleGUI, suddenly the insert method decides to stop working when I give it a list full of data. I debugged nearly everything about it, the function insert itself stopped working or adding anything to tree data. Here is code

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()

I tried changing it from Insert to insert and it didn't help. Any help would be appreciated.

1 Answer 1

0

It didn't show us what the library services is, maybe there's something wrong for the card_packs, or it's empty.

I create a basic data to show how them inserted into the TreeData, then as the data of Tree element.

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()

enter image description here

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks a lot, I had my data saved in a way that didn't make it able for the data to be inserted. Now it works

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.