Найти - Пользователи
Полная версия: drag&drop в windows
Начало » GUI » drag&drop в windows
1 2
igor.kaist
Хочу реализовать drag and drop в windows для своего приложения.
Из gui библиотек использую Tkinter, хотя насколько я понимаю, библиотека здесь не причем.
Все что мне нужно, это чтоб приложение получало путь к файлу, который бедет перетащен в окно.
В какую сторону копать?
slav0nic
http://sourceforge.net/projects/tkdnd
из коробки вроде никак
igor.kaist
Спасибо, но на это я обратил внимание в первую очередь. В исходниках модуля зеленым по белому написано что это не подходит для внешнего драг и дропа. То есть перетащить файл с проводника виндовс в окно Тк не получиться. А вот кнопочки всякие по канвасу перетягивать, всегда пожалуйста.
Добавлено:
ой.. Не заметил ссылки.. Сейчас посмотрим, чем отличается от tkdnd который идет в коробке.
igor.kaist
Вообщем то начал разбираться. tkdnd это раширение tcl/tk. Нашел даже пару врапперов для него. Но вот никак завести не удалось :( Все установлено, даже примеры в комплекте запускаются, но вот в винде не получается перетащить файл на окошко.

Добавлено:
Уффф… разобрался.. как все запутано то. Завтра опишу подробно, как заставить работать drag and drop в винде используя Tkinter :)
gmorgunov
Простите, что влезаю, но у меня вопрос по смежной теме. Стоит ли покупать/заказывать книгу Брента Уэлша, Кена Джонса
“Практическое программирование на Tcl/tk”. Книга недешевая, а покупать кота в мешке не хочется.
Какие еще есть книги по Tcl/tk?
У меня есть только “Азбука Tcl” - П.В. Москвин.

Спасибо заранее.
igor.kaist
Эээ.. Может быть стоит спросить об этом в форуме по tcl, ведь в питоне tcl/tk используется только для tkinterа. Тебе он может пригодиться разве что для создания новых виджетов, потом все равно нужно будет враппер на питоне для этого писать.
А так, имхо, ужасно некрасивый язык..
http://ru.wikipedia.org/wiki/Tk
The gray Cardinal
gmorgunov
Стоит ли покупать/заказывать книгу Брента Уэлша, Кена Джонса…
Имхо, нет (она у меня есть, и я ей практически не пользуюсь). Поскольку она не по Python, пользоваться ей неудобно.
gmorgunov
igor.kaist
Меня интересовало мнение людей, пишущих на питоне. Что мне могут ответить на тикль-форуме?
“… Зачем?” , “ … деньги есть - покупай” , “ … так себе” - эти ответы я уже нашел на Linux.org.ru.

The Gray Cardinal
Книга Г.Шилдта “Полный справочник С/С++” - великолепна. А о достоинствах С++ можно долго спорить.
( Но у вас книга Уэлша есть… :) )

Большое спасибо за ответы.

… Книгу я все-таки заказал :)
igor.kaist
gmorgunov
Меня интересовало мнение людей, пишущих на питоне. Что мне могут ответить на тикль-форуме?
Весело :)
У меня проблема в отношения с девушкой, я ее не понимаю , мне хотелось бы услышать мнение людей пишущих на питоне :)
igor.kaist
Все разобрался я с drag and drop. Вот мой рецепт.
1. Переходим по ссылке, любезно предоставленной slav0nic http://sourceforge.net/projects/tkdnd
2. Скачаиваем tkdnd (бинарники отдельно для платформ можно отдельно не качать, так как они идут вместе tkdnd для разных платформ, как и исходники)
Распаковываем, копируем в папку tcl (в винде она находится в папке с питоном), и убеждаемся, что из Tkinter работать мы не сможем, так как tkdnd это расширение tcl/tk
3. Идем в гугл и спрашиваем у него “python wrapper for tkdnd”
Порывшись в результатах поиска, и испробовав несколько варианов, понимаем, что все запускается, но не работает :)
4. Идем в гугл опять и ищем “python wrapper for tkdnd problem” :)
5. Используя познания английского языка, выясняем что текущая версия tkdnd-2 а врапперы написаны под старую версию..
6. Ищем и находим klappnase.bubble.org/TkinterDnD2/TkinterDnD2.html
7. Пробуем и убеждаемся что все работает.
Вот пример от меня:
from TkinterDnD2 import *
from Tkinter import *

root = TkinterDnD.Tk()

class gui:


def drop(self,event):
x,y=event.x_root-root.winfo_rootx(),event.y_root-root.winfo_rootx()
self.canvas.create_text(x,y,text=str(event.data))


def __init__(self):
self.canvas=Canvas(root,width=600,height=400)
self.canvas.pack()
self.canvas.drop_target_register('*')
self.canvas.dnd_bind('<<Drop>>', self.drop)


a=gui()
root.mainloop()
запускаем, и перетягиваем мышкой на окно тексты, файлы :)
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