Type of Issues (Enhancement, Error, Bug, Question)
Create treedata for Tree element, and use myself methods for Move and Delete of nodes.
It show wrong result after Update and Refresh.
- old treedata List1 [Book1, Book2], List2 [Book3, Book4], List3
- delete Book2
- Move List2 to under Book1
- Tree show List1 [Book1], List2[Book3, Book4], List3
- new treedata List1[Book1[List2[Book3, Book4]]], List3
Not sure why Tree view different with new treedata ? It seems delete and move working on treedata. Is there anythin wrong for update ?
Operating System
Win10
Python version
Python 3.8.1
PySimpleGUI Port and Version
PySimpleGUI 4.15.1
Your Experience Levels In Months or Years
1_ Python programming experience
20 Programming experience overall
tkinter Have used another Python GUI Framework (tkiner, Qt, etc) previously (yes/no is fine)?
You have completed these steps:
Code or partial code causing the problem
import PySimpleGUI as sg
class Tree_Data(sg.TreeData):
def __init__(self):
super().__init__()
def move(self, key1, key2):
if key1 == '':
return False
node = self.tree_dict[key1]
parent1_node = self.tree_dict[node.parent]
parent1_node.children.remove(node)
parent2_node = self.tree_dict[key2]
parent2_node.children.append(node)
return True
def delete(self, key):
if key == '':
return False
node = self.tree_dict[key]
key_list = [key, ]
parent_node = self.tree_dict[node.parent]
parent_node.children.remove(node)
while key_list != []:
temp = []
for item in key_list:
temp += self.tree_dict[item].children
del self.tree_dict[item]
key_list = temp
return True
def Button(Key):
return sg.Button(button_text=Key, target=Key, enable_events=True,
file_types=(('All Python files', '*.py')),
size=(10,1), font=Font)
def Text(Key):
return sg.Text('', size=(50,1), auto_size_text=False, font=Font, key=Key)
def Tree(treedata):
return sg.Tree(
data=treedata,
headings=['Notes',],
visible_column_map=[False,],
col0_width=50,
auto_size_columns=False,
select_mode=sg.TABLE_SELECT_MODE_BROWSE,
show_expanded=False,
enable_events=False,
font=Font,
num_rows=25,
row_height=32,
pad=(0, 0),
key='Tree',
right_click_menu=['Right',['Rename', 'Move', 'Delete']])
Font = 'Courier 20'
treedata = Tree_Data()
treedata.Insert('', 'List1', 'List1', values=[])
treedata.Insert('', 'List2', 'List2', values=[])
treedata.Insert('', 'List3', 'List3', values=[])
treedata.Insert('List1', 'Book1', 'Book1', values=[])
treedata.Insert('List1', 'Book2', 'Book2', values=[])
treedata.Insert('List2', 'Book3', 'Book3', values=[])
treedata.Insert('List2', 'Book4', 'Book4', values=[])
Layout = [[Button('Update'), Button('Quit')],
[Tree(treedata),Text('Text')]]
Window = sg.Window('Python Book', layout=Layout, font=Font, finalize=True)
Window['Tree'].Widget.configure(show='tree')
print('Original treedata:\n',treedata)
while True:
Event, Values = Window.read()
if Event == None or Event == 'Quit':
break
elif Event == 'Update':
result1 = treedata.delete('Book2')
print('Result of Delete: ', result1)
result2 = treedata.move('List2', 'Book1')
print('Result of Move: ', result2)
print('New treedata:\n',treedata)
Window['Tree'].Update(values=treedata)
Window.Refresh()
Window.close()


Original treedata:
: root
List1 : List1
Book1 : Book1
Book2 : Book2
List2 : List2
Book3 : Book3
Book4 : Book4
List3 : List3
Result of Delete: True
Result of Move: True
New treedata:
: root
List1 : List1
Book1 : Book1
List2 : List2
Book3 : Book3
Book4 : Book4
List3 : List3
Type of Issues (Enhancement, Error, Bug, Question)
Create treedata for Tree element, and use myself methods for Move and Delete of nodes.
It show wrong result after Update and Refresh.
Not sure why Tree view different with new treedata ? It seems delete and move working on treedata. Is there anythin wrong for update ?
Operating System
Win10
Python version
Python 3.8.1
PySimpleGUI Port and Version
PySimpleGUI 4.15.1
Your Experience Levels In Months or Years
1_ Python programming experience
20 Programming experience overall
tkinter Have used another Python GUI Framework (tkiner, Qt, etc) previously (yes/no is fine)?
You have completed these steps:
Code or partial code causing the problem