Форум сайта python.su
Не понимаю и не могу найти, как вернуть элементы дерева, после того, как их “спрятали” посредством 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()
Офлайн
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()
Отредактировано xam1816 (Май 15, 2020 23:29:03)
Офлайн
Ой вей. Тут даже не понятно к чему цепляться…
Офлайн
4kpt_V начните с основного … да … таки да, с основного … однозначно
Отредактировано AD0DE412 (Июнь 20, 2020 14:16:17)
Офлайн
Тогда этапами:
from tkinter import *
list =()
global list
Офлайн
4kpt_Vну ок загрезняется пространство имен и возможноно чего то переписать (поломать)from tkinter import *
4kpt_Vчто и происходит т.е. переписывается определение типа list хотя с импортом это не связаноlist =()
4kpt_Vно че здесь не такglobal list
4kpt_Vтут я пас наверное уже пришло … ВРЕМЯ
Про PEP
Отредактировано AD0DE412 (Июнь 20, 2020 18:22:50)
Офлайн
А кто сказал, что все проблемы связаны с импортом.
Глобал использовать нельзя так же как и импорт со *
PEP8 идем читать, раз время пришло.
Офлайн
ловко вы меня )
зы по поводу нельзя … тут скорее не рекомендуется
Отредактировано AD0DE412 (Июнь 20, 2020 18:42:42)
Офлайн
Нет. Нельзя. Видел только 1 случай когда это было нужно и можно.
А не рекомендуется это уже про другое.
P.S. Напишите почему нельзя использовать глобал и тогда, если напишите все, то Вам будет понятно почему его использовать нельзя.
Офлайн
пространство имен же больше причин не знаю если есть что дополнить дополните т.к. это такое … не очнь страшное
Отредактировано AD0DE412 (Июнь 21, 2020 06:02:47)
Офлайн