Уведомления

Группа в Telegram: @pythonsu

#1 Май 6, 2020 12:21:46

Sterh
Зарегистрирован: 2018-06-18
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter вернуть item после detach

Не понимаю и не могу найти, как вернуть элементы дерева, после того, как их “спрятали” посредством 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()

Офлайн

#2 Май 15, 2020 23:27:25

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1308
Репутация: +  112  -
Профиль   Отправить e-mail  

Tkinter вернуть item после detach

 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)

Офлайн

#3 Июнь 19, 2020 21:40:01

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Tkinter вернуть item после detach

Ой вей. Тут даже не понятно к чему цепляться…

Офлайн

#4 Июнь 20, 2020 14:13:42

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Tkinter вернуть item после detach

4kpt_V начните с основного … да … таки да, с основного … однозначно



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Июнь 20, 2020 14:16:17)

Офлайн

#5 Июнь 20, 2020 14:33:50

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Tkinter вернуть item после detach

Тогда этапами:

 from tkinter import *

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

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

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

Офлайн

#6 Июнь 20, 2020 18:15:30

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Tkinter вернуть item после detach

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



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Июнь 20, 2020 18:22:50)

Офлайн

#7 Июнь 20, 2020 18:36:38

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Tkinter вернуть item после detach

А кто сказал, что все проблемы связаны с импортом.
Глобал использовать нельзя так же как и импорт со *
PEP8 идем читать, раз время пришло.

Офлайн

#8 Июнь 20, 2020 18:37:47

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Tkinter вернуть item после detach

ловко вы меня )
зы по поводу нельзя … тут скорее не рекомендуется



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Июнь 20, 2020 18:42:42)

Офлайн

#9 Июнь 20, 2020 20:59:37

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Tkinter вернуть item после detach

Нет. Нельзя. Видел только 1 случай когда это было нужно и можно.
А не рекомендуется это уже про другое.

P.S. Напишите почему нельзя использовать глобал и тогда, если напишите все, то Вам будет понятно почему его использовать нельзя.

Офлайн

#10 Июнь 21, 2020 05:59:36

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Tkinter вернуть item после detach

пространство имен же больше причин не знаю если есть что дополнить дополните т.к. это такое … не очнь страшное



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Июнь 21, 2020 06:02:47)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version