可拖曳Tkinter.Listbox實現


#-*-coding:utf-8-*-
'''
Created on 2015年11月23日

@author: Zroad
'''


import Tkinter

print "Execute here!"

class DDList(Tkinter.Listbox):

def __init__(self,master,**kw):
kw['selectmode'] = Tkinter.SINGLE
Tkinter.Listbox.__init__(self,master,kw)
self.bind("<Button-1>",self.setCurrent) #綁定按鈕事件
self.bind("<B1-Motion>",self.shiftSelection) #綁定鼠標拖曳事件
self.curIndex = None
def setCurrent(self,event):
self.curIndex = self.nearest(event.y)
def shiftSelection(self,event):
i = self.nearest(event.y)
if i < self.curIndex:
x = self.get(i)
self.delete(i)
self.insert(i+1,x)
self.curIndex = i
elif i > self.curIndex:
x = self.get(i)
self.delete(i)
self.insert(i-1,x)
self.curIndex = i

if __name__ == "__main__":
tk = Tkinter.Tk()
length = 10
dd = DDList(tk,height = length)
dd.pack()
for i in xrange(length):
dd.insert(Tkinter.END,str(i))
def show():
"""
每兩秒顯示一次當前的順序
"""

for x in dd.get(0,Tkinter.END):
print x,
print tk.after(2000,show)
tk.after(2000,show)
tk.mainloop()

實現效果圖:
這里寫圖片描述


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com