Найти - Пользователи
Полная версия: Tkinter вернуть item после detach
Начало » GUI » Tkinter вернуть item после detach
1 2
Sterh
Не понимаю и не могу найти, как вернуть элементы дерева, после того, как их “спрятали” посредством detach
В доках пишут, что через move, но как не понимаю совершенно. Вот код. Буду благодарен, если кто напишет функцию и объяснит.

 from tkinter import *
from tkinter import ttk
root = Tk()
tree = ttk.Treeview(root)
tree["columns"]=("one","two","three")
tree.column("#0", width=270, minwidth=270)
tree.column("one", width=150, minwidth=150)
tree.column("two", width=400, minwidth=200)
tree.column("three", width=80, minwidth=50)
tree.heading("#0",text="Name")
tree.heading("one", text="Date modified")
tree.heading("two", text="Type")
tree.heading("three", text="Size")
# Level 1
folder1=tree.insert("", 1,  text="Folder 1", values=("23-Jun-17 11:05","File folder",""))
tree.insert("", 2,  text="text_file.txt", values=("23-Jun-17 11:25","TXT file","1 KB"))
# Level 2
tree.insert(folder1, "end",  text="photo1.png", values=("23-Jun-17 11:28","PNG file","2.6 KB"))
tree.insert(folder1, "end",  text="photo2.png", values=("23-Jun-17 11:29","PNG file","3.2 KB"))
tree.insert(folder1, "end",  text="photo3.png", values=("23-Jun-17 11:30","PNG file","3.1 KB"))
tree.pack()
# Спрятать элементы
def delete():
    selected_item = tree.selection()[0] ## get selected item
    tree.detach(selected_item)
# [b]Вернуть спрятанное[/b]
def ret():
    # [b]ЧТО ПИСАТЬ ЗДЕСЬ????[/b]
    pass
btnDel = ttk.Button(root, text= 'delete', command = delete)
btnDel.pack()
btnRet = ttk.Button(root, text= 'return', command = ret)
btnRet.pack()
root.mainloop()
xam1816
 from tkinter import *
from tkinter import ttk
root = Tk()
tree = ttk.Treeview(root)
tree["columns"]=("one","two","three")
tree.column("#0", width=270, minwidth=270)
tree.column("one", width=150, minwidth=150)
tree.column("two", width=400, minwidth=200)
tree.column("three", width=80, minwidth=50)
tree.heading("#0",text="Name")
tree.heading("one", text="Date modified")
tree.heading("two", text="Type")
tree.heading("three", text="Size")
# Level 1
folder1=tree.insert("", 0,  text="Folder 1", values=("23-Jun-17 11:05","File folder",""))
tree.insert("", 1,  text="text_file.txt", values=("23-Jun-17 11:25","TXT file","1 KB"))
# Level 2
tree.insert(folder1, "end",  text="photo1.png", values=("23-Jun-17 11:28","PNG file","2.6 KB"))
tree.insert(folder1, "end",  text="photo2.png", values=("23-Jun-17 11:29","PNG file","3.2 KB"))
tree.insert(folder1, "end",  text="photo3.png", values=("23-Jun-17 11:30","PNG file","3.1 KB"))
tree.pack()
list =()
# Спрятать элементы
def delete():
	global list
	item=tree.selection() ## get selected item
	parent = tree.parent(item)
	index = tree.index(item)
	list =(item[0],parent,index)
	if item :
		tree.detach(item)
# [b]Вернуть спрятанное[/b]
def ret():
    # [b]ЧТО ПИСАТЬ ЗДЕСЬ????[/b]
	print(list)
	tree.move(list[0],list[1],list[2])
	pass
btnDel = ttk.Button(root, text= 'delete', command = delete)
btnDel.pack()
btnRet = ttk.Button(root, text= 'return', command = ret)
btnRet.pack()
root.mainloop()
4kpt_V
Ой вей. Тут даже не понятно к чему цепляться…
AD0DE412
4kpt_V начните с основного … да … таки да, с основного … однозначно
4kpt_V
Тогда этапами:

 from tkinter import *

Это вообще пиздец
 list =()

Жесть. Учимся играть в лямбды.
 global list

Про PEP пока молчу. Не время еще

AD0DE412
4kpt_V
  from tkinter import *
ну ок загрезняется пространство имен и возможноно чего то переписать (поломать)
4kpt_V
 list =()
что и происходит т.е. переписывается определение типа list хотя с импортом это не связано
4kpt_V
 global list
но че здесь не так
4kpt_V
Про PEP
тут я пас наверное уже пришло … ВРЕМЯ
4kpt_V
А кто сказал, что все проблемы связаны с импортом.
Глобал использовать нельзя так же как и импорт со *
PEP8 идем читать, раз время пришло.
AD0DE412
ловко вы меня )
зы по поводу нельзя … тут скорее не рекомендуется
4kpt_V
Нет. Нельзя. Видел только 1 случай когда это было нужно и можно.
А не рекомендуется это уже про другое.

P.S. Напишите почему нельзя использовать глобал и тогда, если напишите все, то Вам будет понятно почему его использовать нельзя.
AD0DE412
пространство имен же больше причин не знаю если есть что дополнить дополните т.к. это такое … не очнь страшное
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB