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