PySimpleGUI 树无法插入数据到树中
我在用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
,但也没有用。任何帮助都非常感谢。
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()