tkinter 列表框內容上下移動位置

崔中浩發表於2020-12-27
# !/usr/bin/python3

from tkinter import *
import tkinter.messagebox

top = Tk()

top.geometry("400x450")

lbl = Label(top, text="tk列表框內值上下移動位置")
listbox = Listbox(top)
# 向上移動
def list_Up(filter_list):
    a = listbox.get(ANCHOR)  # 獲取選擇的列表值
    p = filter_list.index(a) - 1  # 獲取選擇值在列表中的位置
    if p == -1:
        listbox.delete(0, END)  # 清空列表框
    elif p != -1:  # 如果位置不等於-1
        filter_list.insert(p, a)  # 列表中插入位置p,值為選擇的值
        del filter_list[p + 2]  # 刪除掉原位置的值

        listbox.delete(0, END)  # 清空列表框
    for item in filter_list:  # 迴圈列表
        listbox.insert(END, item)  # 列表框最後插入值
    tkinter.messagebox.showinfo("","向上移動了一個位置")
    return filter_list


# 向下移動
def list_Down(filter_list):
    a = listbox.get(ANCHOR)
    p = filter_list.index(a) + 2
    filter_list.insert(p, a)
    del filter_list[p - 2]
    listbox.delete(0, END)
    for item in filter_list:
        listbox.insert(END, item)
    return filter_list


m = [ "0","1", "2", "3"]
for x in m:
    listbox.insert(END, x)
btn = Button(top, text="向上移動", command=lambda: list_Up(m))
btn2 = Button(top, text="向下移動", command=lambda: list_Down(m))

lbl.pack()
listbox.pack()
btn2.pack()
btn.pack()
top.mainloop()

在這裡插入圖片描述

相關文章