Python 2.7:在不添加现有值的情况下向Tkinter列表框添加新项
我正在编写一个简单的批量文件实用程序。我在GUI中有两个列表框。Listbox1包含存在于用户选择的任何目录中的文件列表。然后,用户可以将listbox1中的选定项目添加到listbox2。目前,这允许添加重复的项目。我想知道如何检查listbox2中是否已经存在所选项目,并且只添加尚未存在的项目 这是我的密码:Python 2.7:在不添加现有值的情况下向Tkinter列表框添加新项,python,python-2.7,tkinter,listbox,Python,Python 2.7,Tkinter,Listbox,我正在编写一个简单的批量文件实用程序。我在GUI中有两个列表框。Listbox1包含存在于用户选择的任何目录中的文件列表。然后,用户可以将listbox1中的选定项目添加到listbox2。目前,这允许添加重复的项目。我想知道如何检查listbox2中是否已经存在所选项目,并且只添加尚未存在的项目 这是我的密码: from Tkinter import * import Tkinter, Tkconstants, tkFileDialog, tkMessageBox import os, sy
from Tkinter import *
import Tkinter, Tkconstants, tkFileDialog, tkMessageBox
import os, sys
class FileZap():
def __init__(self, root):
def getDir():
dir = tkFileDialog.askdirectory(initialdir="C:/")
self.user1.delete(0,END)
self.user1.insert(0,dir)
files = (file for file in os.listdir(dir)
if os.path.isfile(os.path.join(dir, file)))
for file in files:
self.listbox1.insert(0,file)
def selectAdd():
selection1 = self.listbox1.curselection()
for i in selection1:
selectedFiles = self.listbox1.get(i)
self.listbox2.insert(0, selectedFiles)
root.title("Test_App 1.0")
root.geometry("860x450")
self.listbox1 = Listbox(root, width=50, selectmode="multiple")
self.listbox1.grid(row=2, column=2)
self.scrollbar = Scrollbar(orient=VERTICAL, command=self.listbox1.yview)
self.listbox1.config(yscrollcommand=self.scrollbar.set)
self.scrollbar.grid(row=2, column=3, sticky="ns")
self.listbox2 = Listbox(root, width=50)
self.listbox2.grid(row=2, column=4)
self.label1 = Label(root, text="Select a folder: ")
self.label1.grid(row=1, column=1)
self.user1 = Entry(root, width="50")
self.user1.grid(row=1, column=2)
self.browse = Button(root, text="Browse", command=getDir)
self.browse.grid(row=1, column=3)
self.button2 = Button(root, text="Add to Selection", command=selectAdd)
self.button2.grid(row=3, column=3)
self.quit = Button(root, text="Exit", command=root.quit)
self.quit.grid(row=8, column=4)
root = Tkinter.Tk()
file_zap = FileZap(root)
root.mainloop()
在上面的代码中,函数selectAdd()执行项目操作。我希望通过在返回listbox2中的值的函数中添加另一个for循环来实现这一点,如果不在listbox2中,则添加项。但是,我似乎只能使用.get返回所选的值,我不知道如何选择所有值。我也不确定这是否是最好的方法。任何帮助都将不胜感激 使用
listbox2.get(0,END)
获取第二个列表框中当前的所有值,如果没有重复项,则添加所选文件:
def selectAdd():
selection1 = self.listbox1.curselection()
for i in selection1:
selectedFiles = self.listbox1.get(i)
list2files = self.listbox2.get(0, END)
if selectedFiles not in list2files:
self.listbox2.insert(0, selectedFiles)
好吧,我现在觉得自己很愚蠢。我试图创建一个新的列表,并使用'not in'和.append来执行此操作。我不知道,我能做到。非常感谢,很有魅力。