【问题标题】:how to move items from one listbox to another listbox in tkinter如何在 tkinter 中将项目从一个列表框移动到另一个列表框
【发布时间】:2020-04-24 12:01:53
【问题描述】:

我是 python 新手,正在尝试学习 tkinter。有人可以帮我解决这个问题吗?我已经坚持了好几天了。我想将一个项目从一个列表框移动到另一个。我第一次尝试使用 bind 和 但无法让它工作。然后我创建了一个函数并尝试只使用一个按钮。我可以用鼠标从第一个列表框中选择数据并设法将其放入标签中,但我确实需要将它放入第二个列表框 - 但无法使其正常工作。请提供任何帮助

from tkinter import *
from tkinter import ttk
my_window = Tk()

my_listbox_in = Listbox(my_window, height='5')
my_listbox_in.grid(row=0, column=0)
my_listbox_out = Listbox(my_window, height='5')
my_listbox_out.grid(row=0, column=2)

my_list = ['1', '2', '4', '6']

for item in my_list:
    my_listbox_in.insert(END, item)


def delete():
    my_listbox_in.delete(ANCHOR)
# delete all    my_listbox_in.delete(0,END)


def select():
#   my_label.config(text=my_listbox_in.get(ANCHOR))
    my_listbox_out.insert(my_listbox_in.get(ANCHOR))


button1 = Button(my_window, text='Delete', command=delete)
button1.grid(row=0, column=1)

button2 = Button(my_window, text='select', command=select)
button2.grid(row=1, column=1)


my_label = Label(my_window, text='my_label')
my_label.grid(row=2, column=1)

#my_listbox_in.bind('<<ListboxSelect>>', select())

mainloop()

【问题讨论】:

    标签: tkinter listbox python-3.7


    【解决方案1】:

    就这么简单吗……?

    def select():
        my_listbox_out.insert(END, my_listbox_in.get(ANCHOR))
        # ---------------------^  forgot to specify insert point
    

    更新答案

    至于绑定;我假设您的意思是绑定到键盘箭头键。那么这里是一个例子:

    from tkinter import *
    from tkinter import ttk
    
    my_window = Tk()
    
    my_listbox_in = Listbox(my_window, height='5')
    my_listbox_in.grid(row=0, column=0, padx=10, pady=10)
    my_listbox_out = Listbox(my_window, height='5')
    my_listbox_out.grid(row=0, column=2, padx=(0,10), pady=10)
    my_instructions = Label(my_window, text='Use arrow keys to move selected items')
    my_instructions.grid(row=1, column=0, columnspan=3, pady=(0,10))
    
    my_list = ['1', '2', '4', '6']
    
    for item in my_list:
        my_listbox_in.insert(END, item)
    
    def select(event=None):
        my_listbox_out.insert(END, my_listbox_in.get(ANCHOR))
        my_listbox_in.delete(ANCHOR)
    
    def deselect(event=None):
        my_listbox_in.insert(END, my_listbox_out.get(ANCHOR))
        my_listbox_out.delete(ANCHOR)
    
    my_window.bind('<Right>', select)
    my_window.bind('<Left>', deselect)
    
    mainloop()
    

    这些函数不保留项目顺序,但如果这很重要,您可以让回调函数对它们进行排序。

    【讨论】:

    • 确实!哇!非常感谢 - 如果您能就绑定方法的工作方式提供指导,那就太好了 - 如果不是,我已经做了好几天了!
    • 更新答案。
    • 非常感谢,这正是我所追求的理想状态,但永远不会到达那里。现在只需要了解绑定 - 谢谢
    猜你喜欢
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    相关资源
    最近更新 更多