将项目从一个tkinter列表框添加到另一个

时间:2016-05-25 16:31:50

标签: python tkinter listbox

我有两个tkinter列表框(父级和子级)和两个按钮(add_button和remove_button)。 子列表框通过add_button从父列表框中获取项目,并且可以选择从中删除项目 通过remove_button。

的子列表框

我的问题是加载GUI并按下add_button后,父列表框中的第一项是 即使它不是ACTIVE,也会添加到子列表框中。 child_frame也是如此,因为第一项被删除了 按下remove_button后即使它不是ACTIVE。我想要一种方法来防止这种情况。另外,我想要一个项目 无论按下add_button多少次,都只能添加到子列表框中。

下面的代码是另一个更大的代码的一部分。在解决上述问题时,任何帮助都将受到重视。 提前谢谢。

以下是代码:

from Tkinter import *

root = Tk()
root.geometry('330x200')

names = ['Bill', 'Jack', 'Joanne', 'Ann', 'Dave', 'Jane']


def add_name():
    x = parent.get(ACTIVE)
    child.insert(END, x)


def remove_name():
    child.delete(ACTIVE)


parent = Listbox(root)
for name in names:
    parent.insert(END, name)

parent.place(x=5, y=5)

add_button = Button(root, text='Add',
                    command=add_name)
add_button.place(x=148, y=5)

remove_button = Button(root, text='Remove',
                       command=remove_name)
remove_button.place(x=138, y=50)

child = Listbox(root)
child.place(x=200, y=5)

root.mainloop()

1 个答案:

答案 0 :(得分:0)

为什么不将ACTIVE替换为curselection -

def add_name():
    if len(parent.curselection()) != 0:
        x = parent.get(parent.curselection())
        child.insert(END, x)
    else:
        print "select an element first"


def remove_name():
    if len(parent.curselection()) != 0:
        child.delete(child.curselection())
    else:
        print "select an element first"