Thanks a lot Jeff, i think this is really going to help me.<br>
<br>
<br><br><div><span class="gmail_quote">On 05/10/05, <b class="gmail_sendername"><a href="mailto:jepler@unpythonic.net">jepler@unpythonic.net</a></b> <<a href="mailto:jepler@unpythonic.net">jepler@unpythonic.net</a>> wrote:
</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I haven't used bwidget drag and drop myself.<br><br>You can get the widget object for a string path by using
bwidget.nametowidget<br>but I had trouble with this since often the name of an internal widget, such as<br>(in my case) '.1077785676.c', is returned. Perhaps by chopping off parts until<br>a recognized widget is found will work.
<br><br>Here's a small program I just wrote which demonstrates drag&drop between two<br>ListBox (not Tree) widgets.<br><br>from Tkinter import *<br>from bwidget import *<br>import bwidget<br><br>def nametowidget(name):
<br> while name:<br> try:<br> return bwidget.nametowidget(app, name)<br> except KeyError:<br> i = name.rindex('.')<br> name = name[:i]<br><br>def draginit(a, b, c): return ('LISTBOX_ITEM', 'move', b)
<br><br>def do_drop(src, dest, where, op, kind, data):<br> src = nametowidget(src)<br> dest = nametowidget(dest)<br> src.insert(END, text=dest.itemcget(data, "text"))<br><br>def do_drag(src, dest, op, kind, data, result):
<br> if result:<br> src = nametowidget(src)<br> src.delete(data)<br><br>common_args = {'dropcmd': do_drop, 'dragendcmd': do_drag, 'dragenabled': 1,<br> 'dropenabled': 1, 'dropovermode': 'w'}<br><br>app = Tk()
<br><br>t = ListBox(app, **common_args)<br>t.pack(side=LEFT)<br>for text in "abcde":<br> t.insert(END, text=text*3)<br><br>u = ListBox(app, **common_args)<br>u.pack(side=LEFT)<br>for text in "12345":
<br> u.insert(END, text=text*3)<br><br>app.mainloop()<br><br><br>Jeff<br><br><br></blockquote></div><br><br clear="all"><br>-- <br> <br>Olivier
Feys <br><br>Ringlaan 20 <br>B-3080 Tervuren - BELGIUM<br>mailto:<a href="mailto:olivier.feys@gmail.com">olivier.feys@gmail.com</a><br>Mobile phone : +32486/41.65.81<br><br>
<br><br>